Move main crate into repo root
authorFelix Krull <f_krull@gmx.de>
Sat, 20 Oct 2018 09:59:07 +0000 (11:59 +0200)
committerColin Walters <walters@verbum.org>
Fri, 6 May 2022 16:53:53 +0000 (12:53 -0400)
43 files changed:
rust-bindings/rust/Cargo.toml
rust-bindings/rust/conf/libostree.toml
rust-bindings/rust/libostree/Cargo.toml [deleted file]
rust-bindings/rust/libostree/src/auto/async_progress.rs [deleted file]
rust-bindings/rust/libostree/src/auto/collection_ref.rs [deleted file]
rust-bindings/rust/libostree/src/auto/constants.rs [deleted file]
rust-bindings/rust/libostree/src/auto/enums.rs [deleted file]
rust-bindings/rust/libostree/src/auto/flags.rs [deleted file]
rust-bindings/rust/libostree/src/auto/functions.rs [deleted file]
rust-bindings/rust/libostree/src/auto/gpg_verify_result.rs [deleted file]
rust-bindings/rust/libostree/src/auto/mod.rs [deleted file]
rust-bindings/rust/libostree/src/auto/mutable_tree.rs [deleted file]
rust-bindings/rust/libostree/src/auto/remote.rs [deleted file]
rust-bindings/rust/libostree/src/auto/repo.rs [deleted file]
rust-bindings/rust/libostree/src/auto/repo_commit_modifier.rs [deleted file]
rust-bindings/rust/libostree/src/auto/repo_dev_ino_cache.rs [deleted file]
rust-bindings/rust/libostree/src/auto/repo_file.rs [deleted file]
rust-bindings/rust/libostree/src/auto/repo_transaction_stats.rs [deleted file]
rust-bindings/rust/libostree/src/auto/se_policy.rs [deleted file]
rust-bindings/rust/libostree/src/lib.rs [deleted file]
rust-bindings/rust/libostree/src/object_name.rs [deleted file]
rust-bindings/rust/libostree/src/repo.rs [deleted file]
rust-bindings/rust/libostree/tests/roundtrip.rs [deleted file]
rust-bindings/rust/src/auto/async_progress.rs [new file with mode: 0644]
rust-bindings/rust/src/auto/collection_ref.rs [new file with mode: 0644]
rust-bindings/rust/src/auto/constants.rs [new file with mode: 0644]
rust-bindings/rust/src/auto/enums.rs [new file with mode: 0644]
rust-bindings/rust/src/auto/flags.rs [new file with mode: 0644]
rust-bindings/rust/src/auto/functions.rs [new file with mode: 0644]
rust-bindings/rust/src/auto/gpg_verify_result.rs [new file with mode: 0644]
rust-bindings/rust/src/auto/mod.rs [new file with mode: 0644]
rust-bindings/rust/src/auto/mutable_tree.rs [new file with mode: 0644]
rust-bindings/rust/src/auto/remote.rs [new file with mode: 0644]
rust-bindings/rust/src/auto/repo.rs [new file with mode: 0644]
rust-bindings/rust/src/auto/repo_commit_modifier.rs [new file with mode: 0644]
rust-bindings/rust/src/auto/repo_dev_ino_cache.rs [new file with mode: 0644]
rust-bindings/rust/src/auto/repo_file.rs [new file with mode: 0644]
rust-bindings/rust/src/auto/repo_transaction_stats.rs [new file with mode: 0644]
rust-bindings/rust/src/auto/se_policy.rs [new file with mode: 0644]
rust-bindings/rust/src/lib.rs [new file with mode: 0644]
rust-bindings/rust/src/object_name.rs [new file with mode: 0644]
rust-bindings/rust/src/repo.rs [new file with mode: 0644]
rust-bindings/rust/tests/roundtrip.rs [new file with mode: 0644]

index f391e0a0a0f39bed9c09460b261905a02e8295fb..4f1c1a4f423bca7f52c60d79362e284897f66cf7 100644 (file)
@@ -1,5 +1,63 @@
-[workspace]
-members = [
+[package]
+name = "libostree"
+version = "0.1.1"
+authors = ["Felix Krull"]
+
+license = "MIT"
+description = "Rust bindings for libostree"
+keywords = ["ostree", "libostree"]
+
+documentation = "https://fkrull.gitlab.io/rust-libostree/libostree"
+repository = "https://gitlab.com/fkrull/rust-libostree"
+readme = "README.md"
+
+exclude = [
+    "conf",
+    "gir-files",
     "libostree-sys",
-    "libostree"
+
 ]
+
+[package.metadata.docs.rs]
+features = ["dox"]
+
+[badges.gitlab]
+repository = "fkrull/rust-libostree"
+
+[lib]
+name = "libostree"
+
+[dependencies]
+libc = "0.2"
+bitflags = "1"
+lazy_static = "1.1"
+glib = "0.6"
+gio = "0.5"
+glib-sys = "0.7"
+gobject-sys = "0.7"
+gio-sys = "0.7"
+libostree-sys = { version = "0.1", path = "libostree-sys" }
+
+[dev-dependencies]
+tempfile = "3"
+
+[features]
+dox = ["libostree-sys/dox"]
+v2014_9 = ["libostree-sys/v2014_9"]
+v2015_7 = ["v2014_9", "libostree-sys/v2015_7"]
+v2017_3 = ["v2015_7", "libostree-sys/v2017_3"]
+v2017_4 = ["v2017_3", "libostree-sys/v2017_4"]
+v2017_6 = ["v2017_4", "libostree-sys/v2017_6"]
+v2017_7 = ["v2017_6", "libostree-sys/v2017_7"]
+v2017_8 = ["v2017_7", "libostree-sys/v2017_8"]
+v2017_9 = ["v2017_8", "libostree-sys/v2017_9"]
+v2017_10 = ["v2017_9", "libostree-sys/v2017_10"]
+v2017_11 = ["v2017_10", "libostree-sys/v2017_11"]
+v2017_12 = ["v2017_11", "libostree-sys/v2017_12"]
+v2017_13 = ["v2017_12", "libostree-sys/v2017_13"]
+v2017_15 = ["v2017_13", "libostree-sys/v2017_15"]
+v2018_2 = ["v2017_15", "libostree-sys/v2018_2"]
+v2018_3 = ["v2018_2", "libostree-sys/v2018_3"]
+v2018_5 = ["v2018_3", "libostree-sys/v2018_5"]
+v2018_6 = ["v2018_5", "libostree-sys/v2018_6"]
+v2018_7 = ["v2018_6", "libostree-sys/v2018_7"]
index 1b87167d27c39c8f6442b4eb14f848ed76023f38..f76fd2f655c558ec904293e84b9cdd2b4d5374a9 100644 (file)
@@ -2,7 +2,7 @@
 work_mode = "normal"
 library = "OSTree"
 version = "1.0"
-target_path = "../libostree"
+target_path = ".."
 doc_target_path = "../target/vendor.md"
 deprecate_by_min_version = true
 
diff --git a/rust-bindings/rust/libostree/Cargo.toml b/rust-bindings/rust/libostree/Cargo.toml
deleted file mode 100644 (file)
index 6d86001..0000000
+++ /dev/null
@@ -1,56 +0,0 @@
-[package]
-name = "libostree"
-version = "0.1.1"
-authors = ["Felix Krull"]
-
-license = "MIT"
-description = "Rust bindings for libostree"
-keywords = ["ostree", "libostree"]
-
-documentation = "https://fkrull.gitlab.io/rust-libostree/libostree"
-repository = "https://gitlab.com/fkrull/rust-libostree"
-readme = "README.md"
-
-[package.metadata.docs.rs]
-features = ["dox"]
-
-[badges.gitlab]
-repository = "fkrull/rust-libostree"
-
-[lib]
-name = "libostree"
-
-[dependencies]
-libc = "0.2"
-bitflags = "1"
-lazy_static = "1.1"
-glib = "0.6"
-gio = "0.5"
-glib-sys = "0.7"
-gobject-sys = "0.7"
-gio-sys = "0.7"
-libostree-sys = { version = "0.1", path = "../libostree-sys" }
-
-[dev-dependencies]
-tempfile = "3"
-
-[features]
-dox = ["libostree-sys/dox"]
-v2014_9 = ["libostree-sys/v2014_9"]
-v2015_7 = ["v2014_9", "libostree-sys/v2015_7"]
-v2017_3 = ["v2015_7", "libostree-sys/v2017_3"]
-v2017_4 = ["v2017_3", "libostree-sys/v2017_4"]
-v2017_6 = ["v2017_4", "libostree-sys/v2017_6"]
-v2017_7 = ["v2017_6", "libostree-sys/v2017_7"]
-v2017_8 = ["v2017_7", "libostree-sys/v2017_8"]
-v2017_9 = ["v2017_8", "libostree-sys/v2017_9"]
-v2017_10 = ["v2017_9", "libostree-sys/v2017_10"]
-v2017_11 = ["v2017_10", "libostree-sys/v2017_11"]
-v2017_12 = ["v2017_11", "libostree-sys/v2017_12"]
-v2017_13 = ["v2017_12", "libostree-sys/v2017_13"]
-v2017_15 = ["v2017_13", "libostree-sys/v2017_15"]
-v2018_2 = ["v2017_15", "libostree-sys/v2018_2"]
-v2018_3 = ["v2018_2", "libostree-sys/v2018_3"]
-v2018_5 = ["v2018_3", "libostree-sys/v2018_5"]
-v2018_6 = ["v2018_5", "libostree-sys/v2018_6"]
-v2018_7 = ["v2018_6", "libostree-sys/v2018_7"]
diff --git a/rust-bindings/rust/libostree/src/auto/async_progress.rs b/rust-bindings/rust/libostree/src/auto/async_progress.rs
deleted file mode 100644 (file)
index c441b5c..0000000
+++ /dev/null
@@ -1,161 +0,0 @@
-// This file was generated by gir (https://github.com/gtk-rs/gir @ ffda6f9)
-// from gir-files (https://github.com/gtk-rs/gir-files @ ???)
-// DO NOT EDIT
-
-use ffi;
-use glib;
-use glib::object::Downcast;
-use glib::object::IsA;
-use glib::signal::SignalHandlerId;
-use glib::signal::connect;
-use glib::translate::*;
-use glib_ffi;
-use gobject_ffi;
-use std::boxed::Box as Box_;
-use std::mem;
-use std::mem::transmute;
-use std::ptr;
-
-glib_wrapper! {
-    pub struct AsyncProgress(Object<ffi::OstreeAsyncProgress, ffi::OstreeAsyncProgressClass>);
-
-    match fn {
-        get_type => || ffi::ostree_async_progress_get_type(),
-    }
-}
-
-impl AsyncProgress {
-    pub fn new() -> AsyncProgress {
-        unsafe {
-            from_glib_full(ffi::ostree_async_progress_new())
-        }
-    }
-
-    //pub fn new_and_connect<P: Into<Option</*Unimplemented*/Fundamental: Pointer>>, Q: Into<Option</*Unimplemented*/Fundamental: Pointer>>>(changed: P, user_data: Q) -> AsyncProgress {
-    //    unsafe { TODO: call ffi::ostree_async_progress_new_and_connect() }
-    //}
-}
-
-impl Default for AsyncProgress {
-    fn default() -> Self {
-        Self::new()
-    }
-}
-
-pub trait AsyncProgressExt {
-    fn finish(&self);
-
-    //#[cfg(any(feature = "v2017_6", feature = "dox"))]
-    //fn get(&self, : /*Unknown conversion*//*Unimplemented*/Fundamental: VarArgs);
-
-    #[cfg(any(feature = "v2017_6", feature = "dox"))]
-    fn get_status(&self) -> Option<String>;
-
-    fn get_uint(&self, key: &str) -> u32;
-
-    fn get_uint64(&self, key: &str) -> u64;
-
-    #[cfg(any(feature = "v2017_6", feature = "dox"))]
-    fn get_variant(&self, key: &str) -> Option<glib::Variant>;
-
-    //#[cfg(any(feature = "v2017_6", feature = "dox"))]
-    //fn set(&self, : /*Unknown conversion*//*Unimplemented*/Fundamental: VarArgs);
-
-    #[cfg(any(feature = "v2017_6", feature = "dox"))]
-    fn set_status<'a, P: Into<Option<&'a str>>>(&self, status: P);
-
-    fn set_uint(&self, key: &str, value: u32);
-
-    fn set_uint64(&self, key: &str, value: u64);
-
-    #[cfg(any(feature = "v2017_6", feature = "dox"))]
-    fn set_variant(&self, key: &str, value: &glib::Variant);
-
-    fn connect_changed<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId;
-}
-
-impl<O: IsA<AsyncProgress> + IsA<glib::object::Object>> AsyncProgressExt for O {
-    fn finish(&self) {
-        unsafe {
-            ffi::ostree_async_progress_finish(self.to_glib_none().0);
-        }
-    }
-
-    //#[cfg(any(feature = "v2017_6", feature = "dox"))]
-    //fn get(&self, : /*Unknown conversion*//*Unimplemented*/Fundamental: VarArgs) {
-    //    unsafe { TODO: call ffi::ostree_async_progress_get() }
-    //}
-
-    #[cfg(any(feature = "v2017_6", feature = "dox"))]
-    fn get_status(&self) -> Option<String> {
-        unsafe {
-            from_glib_full(ffi::ostree_async_progress_get_status(self.to_glib_none().0))
-        }
-    }
-
-    fn get_uint(&self, key: &str) -> u32 {
-        unsafe {
-            ffi::ostree_async_progress_get_uint(self.to_glib_none().0, key.to_glib_none().0)
-        }
-    }
-
-    fn get_uint64(&self, key: &str) -> u64 {
-        unsafe {
-            ffi::ostree_async_progress_get_uint64(self.to_glib_none().0, key.to_glib_none().0)
-        }
-    }
-
-    #[cfg(any(feature = "v2017_6", feature = "dox"))]
-    fn get_variant(&self, key: &str) -> Option<glib::Variant> {
-        unsafe {
-            from_glib_full(ffi::ostree_async_progress_get_variant(self.to_glib_none().0, key.to_glib_none().0))
-        }
-    }
-
-    //#[cfg(any(feature = "v2017_6", feature = "dox"))]
-    //fn set(&self, : /*Unknown conversion*//*Unimplemented*/Fundamental: VarArgs) {
-    //    unsafe { TODO: call ffi::ostree_async_progress_set() }
-    //}
-
-    #[cfg(any(feature = "v2017_6", feature = "dox"))]
-    fn set_status<'a, P: Into<Option<&'a str>>>(&self, status: P) {
-        let status = status.into();
-        let status = status.to_glib_none();
-        unsafe {
-            ffi::ostree_async_progress_set_status(self.to_glib_none().0, status.0);
-        }
-    }
-
-    fn set_uint(&self, key: &str, value: u32) {
-        unsafe {
-            ffi::ostree_async_progress_set_uint(self.to_glib_none().0, key.to_glib_none().0, value);
-        }
-    }
-
-    fn set_uint64(&self, key: &str, value: u64) {
-        unsafe {
-            ffi::ostree_async_progress_set_uint64(self.to_glib_none().0, key.to_glib_none().0, value);
-        }
-    }
-
-    #[cfg(any(feature = "v2017_6", feature = "dox"))]
-    fn set_variant(&self, key: &str, value: &glib::Variant) {
-        unsafe {
-            ffi::ostree_async_progress_set_variant(self.to_glib_none().0, key.to_glib_none().0, value.to_glib_none().0);
-        }
-    }
-
-    fn connect_changed<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
-        unsafe {
-            let f: Box_<Box_<Fn(&Self) + 'static>> = Box_::new(Box_::new(f));
-            connect(self.to_glib_none().0, "changed",
-                transmute(changed_trampoline::<Self> as usize), Box_::into_raw(f) as *mut _)
-        }
-    }
-}
-
-unsafe extern "C" fn changed_trampoline<P>(this: *mut ffi::OstreeAsyncProgress, f: glib_ffi::gpointer)
-where P: IsA<AsyncProgress> {
-    let f: &&(Fn(&P) + 'static) = transmute(f);
-    f(&AsyncProgress::from_glib_borrow(this).downcast_unchecked())
-}
diff --git a/rust-bindings/rust/libostree/src/auto/collection_ref.rs b/rust-bindings/rust/libostree/src/auto/collection_ref.rs
deleted file mode 100644 (file)
index d52f95c..0000000
+++ /dev/null
@@ -1,84 +0,0 @@
-// This file was generated by gir (https://github.com/gtk-rs/gir @ ffda6f9)
-// from gir-files (https://github.com/gtk-rs/gir-files @ ???)
-// DO NOT EDIT
-
-use ffi;
-use glib::translate::*;
-use glib_ffi;
-use gobject_ffi;
-use std::hash;
-use std::mem;
-use std::ptr;
-
-glib_wrapper! {
-    #[derive(Debug, PartialOrd, Ord)]
-    pub struct CollectionRef(Boxed<ffi::OstreeCollectionRef>);
-
-    match fn {
-        copy => |ptr| gobject_ffi::g_boxed_copy(ffi::ostree_collection_ref_get_type(), ptr as *mut _) as *mut ffi::OstreeCollectionRef,
-        free => |ptr| gobject_ffi::g_boxed_free(ffi::ostree_collection_ref_get_type(), ptr as *mut _),
-        get_type => || ffi::ostree_collection_ref_get_type(),
-    }
-}
-
-impl CollectionRef {
-    #[cfg(any(feature = "v2018_6", feature = "dox"))]
-    pub fn new<'a, P: Into<Option<&'a str>>>(collection_id: P, ref_name: &str) -> CollectionRef {
-        let collection_id = collection_id.into();
-        let collection_id = collection_id.to_glib_none();
-        unsafe {
-            from_glib_full(ffi::ostree_collection_ref_new(collection_id.0, ref_name.to_glib_none().0))
-        }
-    }
-
-    #[cfg(any(feature = "v2018_6", feature = "dox"))]
-    pub fn dup(&self) -> Option<CollectionRef> {
-        unsafe {
-            from_glib_full(ffi::ostree_collection_ref_dup(self.to_glib_none().0))
-        }
-    }
-
-    #[cfg(any(feature = "v2018_6", feature = "dox"))]
-    pub fn dupv(refs: &[&CollectionRef]) -> Vec<CollectionRef> {
-        unsafe {
-            FromGlibPtrContainer::from_glib_full(ffi::ostree_collection_ref_dupv(refs.to_glib_none().0))
-        }
-    }
-
-    #[cfg(any(feature = "v2018_6", feature = "dox"))]
-    fn equal<'a, P: Into<Option<&'a CollectionRef>>>(&self, ref2: P) -> bool {
-        unsafe {
-            from_glib(ffi::ostree_collection_ref_equal(ToGlibPtr::<*mut ffi::OstreeCollectionRef>::to_glib_none(self).0 as glib_ffi::gconstpointer, ToGlibPtr::<*mut ffi::OstreeCollectionRef>::to_glib_none(ref2).0 as glib_ffi::gconstpointer))
-        }
-    }
-
-    #[cfg(any(feature = "v2018_6", feature = "dox"))]
-    pub fn freev(refs: &[&CollectionRef]) {
-        unsafe {
-            ffi::ostree_collection_ref_freev(refs.to_glib_full());
-        }
-    }
-
-    #[cfg(any(feature = "v2018_6", feature = "dox"))]
-    fn hash(&self) -> u32 {
-        unsafe {
-            ffi::ostree_collection_ref_hash(ToGlibPtr::<*mut ffi::OstreeCollectionRef>::to_glib_none(self).0 as glib_ffi::gconstpointer)
-        }
-    }
-}
-
-impl PartialEq for CollectionRef {
-    #[inline]
-    fn eq(&self, other: &Self) -> bool {
-        self.equal(other)
-    }
-}
-
-impl Eq for CollectionRef {}
-
-impl hash::Hash for CollectionRef {
-    #[inline]
-    fn hash<H>(&self, state: &mut H) where H: hash::Hasher {
-        hash::Hash::hash(&self.hash(), state)
-    }
-}
diff --git a/rust-bindings/rust/libostree/src/auto/constants.rs b/rust-bindings/rust/libostree/src/auto/constants.rs
deleted file mode 100644 (file)
index 7e6240b..0000000
+++ /dev/null
@@ -1,61 +0,0 @@
-// This file was generated by gir (https://github.com/gtk-rs/gir @ ffda6f9)
-// from gir-files (https://github.com/gtk-rs/gir-files @ ???)
-// DO NOT EDIT
-
-use ffi;
-use std::ffi::CStr;
-
-lazy_static! {
-    pub static ref COMMIT_GVARIANT_STRING: &'static str = unsafe{CStr::from_ptr(ffi::OSTREE_COMMIT_GVARIANT_STRING).to_str().unwrap()};
-}
-#[cfg(any(feature = "v2018_6", feature = "dox"))]
-lazy_static! {
-    pub static ref COMMIT_META_KEY_COLLECTION_BINDING: &'static str = unsafe{CStr::from_ptr(ffi::OSTREE_COMMIT_META_KEY_COLLECTION_BINDING).to_str().unwrap()};
-}
-#[cfg(any(feature = "v2017_7", feature = "dox"))]
-lazy_static! {
-    pub static ref COMMIT_META_KEY_ENDOFLIFE: &'static str = unsafe{CStr::from_ptr(ffi::OSTREE_COMMIT_META_KEY_ENDOFLIFE).to_str().unwrap()};
-}
-#[cfg(any(feature = "v2017_7", feature = "dox"))]
-lazy_static! {
-    pub static ref COMMIT_META_KEY_ENDOFLIFE_REBASE: &'static str = unsafe{CStr::from_ptr(ffi::OSTREE_COMMIT_META_KEY_ENDOFLIFE_REBASE).to_str().unwrap()};
-}
-#[cfg(any(feature = "v2017_9", feature = "dox"))]
-lazy_static! {
-    pub static ref COMMIT_META_KEY_REF_BINDING: &'static str = unsafe{CStr::from_ptr(ffi::OSTREE_COMMIT_META_KEY_REF_BINDING).to_str().unwrap()};
-}
-#[cfg(any(feature = "v2017_13", feature = "dox"))]
-lazy_static! {
-    pub static ref COMMIT_META_KEY_SOURCE_TITLE: &'static str = unsafe{CStr::from_ptr(ffi::OSTREE_COMMIT_META_KEY_SOURCE_TITLE).to_str().unwrap()};
-}
-#[cfg(any(feature = "v2014_9", feature = "dox"))]
-lazy_static! {
-    pub static ref COMMIT_META_KEY_VERSION: &'static str = unsafe{CStr::from_ptr(ffi::OSTREE_COMMIT_META_KEY_VERSION).to_str().unwrap()};
-}
-lazy_static! {
-    pub static ref DIRMETA_GVARIANT_STRING: &'static str = unsafe{CStr::from_ptr(ffi::OSTREE_DIRMETA_GVARIANT_STRING).to_str().unwrap()};
-}
-lazy_static! {
-    pub static ref FILEMETA_GVARIANT_STRING: &'static str = unsafe{CStr::from_ptr(ffi::OSTREE_FILEMETA_GVARIANT_STRING).to_str().unwrap()};
-}
-#[cfg(any(feature = "v2018_3", feature = "dox"))]
-lazy_static! {
-    pub static ref ORIGIN_TRANSIENT_GROUP: &'static str = unsafe{CStr::from_ptr(ffi::OSTREE_ORIGIN_TRANSIENT_GROUP).to_str().unwrap()};
-}
-#[cfg(any(feature = "v2018_6", feature = "dox"))]
-lazy_static! {
-    pub static ref REPO_METADATA_REF: &'static str = unsafe{CStr::from_ptr(ffi::OSTREE_REPO_METADATA_REF).to_str().unwrap()};
-}
-lazy_static! {
-    pub static ref SUMMARY_GVARIANT_STRING: &'static str = unsafe{CStr::from_ptr(ffi::OSTREE_SUMMARY_GVARIANT_STRING).to_str().unwrap()};
-}
-lazy_static! {
-    pub static ref SUMMARY_SIG_GVARIANT_STRING: &'static str = unsafe{CStr::from_ptr(ffi::OSTREE_SUMMARY_SIG_GVARIANT_STRING).to_str().unwrap()};
-}
-lazy_static! {
-    pub static ref TREE_GVARIANT_STRING: &'static str = unsafe{CStr::from_ptr(ffi::OSTREE_TREE_GVARIANT_STRING).to_str().unwrap()};
-}
-#[cfg(any(feature = "v2017_4", feature = "dox"))]
-lazy_static! {
-    pub static ref VERSION_S: &'static str = unsafe{CStr::from_ptr(ffi::OSTREE_VERSION_S).to_str().unwrap()};
-}
diff --git a/rust-bindings/rust/libostree/src/auto/enums.rs b/rust-bindings/rust/libostree/src/auto/enums.rs
deleted file mode 100644 (file)
index ef22ad0..0000000
+++ /dev/null
@@ -1,334 +0,0 @@
-// This file was generated by gir (https://github.com/gtk-rs/gir @ ffda6f9)
-// from gir-files (https://github.com/gtk-rs/gir-files @ ???)
-// DO NOT EDIT
-
-use ffi;
-use glib::translate::*;
-
-#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
-#[derive(Clone, Copy)]
-pub enum GpgSignatureFormatFlags {
-    GpgSignatureFormatDefault,
-    #[doc(hidden)]
-    __Unknown(i32),
-}
-
-#[doc(hidden)]
-impl ToGlib for GpgSignatureFormatFlags {
-    type GlibType = ffi::OstreeGpgSignatureFormatFlags;
-
-    fn to_glib(&self) -> ffi::OstreeGpgSignatureFormatFlags {
-        match *self {
-            GpgSignatureFormatFlags::GpgSignatureFormatDefault => ffi::OSTREE_GPG_SIGNATURE_FORMAT_DEFAULT,
-            GpgSignatureFormatFlags::__Unknown(value) => value
-        }
-    }
-}
-
-#[doc(hidden)]
-impl FromGlib<ffi::OstreeGpgSignatureFormatFlags> for GpgSignatureFormatFlags {
-    fn from_glib(value: ffi::OstreeGpgSignatureFormatFlags) -> Self {
-        match value {
-            0 => GpgSignatureFormatFlags::GpgSignatureFormatDefault,
-            value => GpgSignatureFormatFlags::__Unknown(value),
-        }
-    }
-}
-
-#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
-#[derive(Clone, Copy)]
-pub enum ObjectType {
-    File,
-    DirTree,
-    DirMeta,
-    Commit,
-    TombstoneCommit,
-    CommitMeta,
-    PayloadLink,
-    #[doc(hidden)]
-    __Unknown(i32),
-}
-
-#[doc(hidden)]
-impl ToGlib for ObjectType {
-    type GlibType = ffi::OstreeObjectType;
-
-    fn to_glib(&self) -> ffi::OstreeObjectType {
-        match *self {
-            ObjectType::File => ffi::OSTREE_OBJECT_TYPE_FILE,
-            ObjectType::DirTree => ffi::OSTREE_OBJECT_TYPE_DIR_TREE,
-            ObjectType::DirMeta => ffi::OSTREE_OBJECT_TYPE_DIR_META,
-            ObjectType::Commit => ffi::OSTREE_OBJECT_TYPE_COMMIT,
-            ObjectType::TombstoneCommit => ffi::OSTREE_OBJECT_TYPE_TOMBSTONE_COMMIT,
-            ObjectType::CommitMeta => ffi::OSTREE_OBJECT_TYPE_COMMIT_META,
-            ObjectType::PayloadLink => ffi::OSTREE_OBJECT_TYPE_PAYLOAD_LINK,
-            ObjectType::__Unknown(value) => value
-        }
-    }
-}
-
-#[doc(hidden)]
-impl FromGlib<ffi::OstreeObjectType> for ObjectType {
-    fn from_glib(value: ffi::OstreeObjectType) -> Self {
-        match value {
-            1 => ObjectType::File,
-            2 => ObjectType::DirTree,
-            3 => ObjectType::DirMeta,
-            4 => ObjectType::Commit,
-            5 => ObjectType::TombstoneCommit,
-            6 => ObjectType::CommitMeta,
-            7 => ObjectType::PayloadLink,
-            value => ObjectType::__Unknown(value),
-        }
-    }
-}
-
-#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
-#[derive(Clone, Copy)]
-pub enum RepoCheckoutMode {
-    None,
-    User,
-    #[doc(hidden)]
-    __Unknown(i32),
-}
-
-#[doc(hidden)]
-impl ToGlib for RepoCheckoutMode {
-    type GlibType = ffi::OstreeRepoCheckoutMode;
-
-    fn to_glib(&self) -> ffi::OstreeRepoCheckoutMode {
-        match *self {
-            RepoCheckoutMode::None => ffi::OSTREE_REPO_CHECKOUT_MODE_NONE,
-            RepoCheckoutMode::User => ffi::OSTREE_REPO_CHECKOUT_MODE_USER,
-            RepoCheckoutMode::__Unknown(value) => value
-        }
-    }
-}
-
-#[doc(hidden)]
-impl FromGlib<ffi::OstreeRepoCheckoutMode> for RepoCheckoutMode {
-    fn from_glib(value: ffi::OstreeRepoCheckoutMode) -> Self {
-        match value {
-            0 => RepoCheckoutMode::None,
-            1 => RepoCheckoutMode::User,
-            value => RepoCheckoutMode::__Unknown(value),
-        }
-    }
-}
-
-#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
-#[derive(Clone, Copy)]
-pub enum RepoCheckoutOverwriteMode {
-    None,
-    UnionFiles,
-    AddFiles,
-    UnionIdentical,
-    #[doc(hidden)]
-    __Unknown(i32),
-}
-
-#[doc(hidden)]
-impl ToGlib for RepoCheckoutOverwriteMode {
-    type GlibType = ffi::OstreeRepoCheckoutOverwriteMode;
-
-    fn to_glib(&self) -> ffi::OstreeRepoCheckoutOverwriteMode {
-        match *self {
-            RepoCheckoutOverwriteMode::None => ffi::OSTREE_REPO_CHECKOUT_OVERWRITE_NONE,
-            RepoCheckoutOverwriteMode::UnionFiles => ffi::OSTREE_REPO_CHECKOUT_OVERWRITE_UNION_FILES,
-            RepoCheckoutOverwriteMode::AddFiles => ffi::OSTREE_REPO_CHECKOUT_OVERWRITE_ADD_FILES,
-            RepoCheckoutOverwriteMode::UnionIdentical => ffi::OSTREE_REPO_CHECKOUT_OVERWRITE_UNION_IDENTICAL,
-            RepoCheckoutOverwriteMode::__Unknown(value) => value
-        }
-    }
-}
-
-#[doc(hidden)]
-impl FromGlib<ffi::OstreeRepoCheckoutOverwriteMode> for RepoCheckoutOverwriteMode {
-    fn from_glib(value: ffi::OstreeRepoCheckoutOverwriteMode) -> Self {
-        match value {
-            0 => RepoCheckoutOverwriteMode::None,
-            1 => RepoCheckoutOverwriteMode::UnionFiles,
-            2 => RepoCheckoutOverwriteMode::AddFiles,
-            3 => RepoCheckoutOverwriteMode::UnionIdentical,
-            value => RepoCheckoutOverwriteMode::__Unknown(value),
-        }
-    }
-}
-
-#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
-#[derive(Clone, Copy)]
-pub enum RepoMode {
-    Bare,
-    Archive,
-    BareUser,
-    BareUserOnly,
-    #[doc(hidden)]
-    __Unknown(i32),
-}
-
-#[doc(hidden)]
-impl ToGlib for RepoMode {
-    type GlibType = ffi::OstreeRepoMode;
-
-    fn to_glib(&self) -> ffi::OstreeRepoMode {
-        match *self {
-            RepoMode::Bare => ffi::OSTREE_REPO_MODE_BARE,
-            RepoMode::Archive => ffi::OSTREE_REPO_MODE_ARCHIVE,
-            RepoMode::BareUser => ffi::OSTREE_REPO_MODE_BARE_USER,
-            RepoMode::BareUserOnly => ffi::OSTREE_REPO_MODE_BARE_USER_ONLY,
-            RepoMode::__Unknown(value) => value
-        }
-    }
-}
-
-#[doc(hidden)]
-impl FromGlib<ffi::OstreeRepoMode> for RepoMode {
-    fn from_glib(value: ffi::OstreeRepoMode) -> Self {
-        match value {
-            0 => RepoMode::Bare,
-            1 => RepoMode::Archive,
-            2 => RepoMode::BareUser,
-            3 => RepoMode::BareUserOnly,
-            value => RepoMode::__Unknown(value),
-        }
-    }
-}
-
-#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
-#[derive(Clone, Copy)]
-pub enum RepoPruneFlags {
-    None,
-    NoPrune,
-    RefsOnly,
-    #[doc(hidden)]
-    __Unknown(i32),
-}
-
-#[doc(hidden)]
-impl ToGlib for RepoPruneFlags {
-    type GlibType = ffi::OstreeRepoPruneFlags;
-
-    fn to_glib(&self) -> ffi::OstreeRepoPruneFlags {
-        match *self {
-            RepoPruneFlags::None => ffi::OSTREE_REPO_PRUNE_FLAGS_NONE,
-            RepoPruneFlags::NoPrune => ffi::OSTREE_REPO_PRUNE_FLAGS_NO_PRUNE,
-            RepoPruneFlags::RefsOnly => ffi::OSTREE_REPO_PRUNE_FLAGS_REFS_ONLY,
-            RepoPruneFlags::__Unknown(value) => value
-        }
-    }
-}
-
-#[doc(hidden)]
-impl FromGlib<ffi::OstreeRepoPruneFlags> for RepoPruneFlags {
-    fn from_glib(value: ffi::OstreeRepoPruneFlags) -> Self {
-        match value {
-            0 => RepoPruneFlags::None,
-            1 => RepoPruneFlags::NoPrune,
-            2 => RepoPruneFlags::RefsOnly,
-            value => RepoPruneFlags::__Unknown(value),
-        }
-    }
-}
-
-#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
-#[derive(Clone, Copy)]
-pub enum RepoRemoteChange {
-    Add,
-    AddIfNotExists,
-    Delete,
-    DeleteIfExists,
-    #[doc(hidden)]
-    __Unknown(i32),
-}
-
-#[doc(hidden)]
-impl ToGlib for RepoRemoteChange {
-    type GlibType = ffi::OstreeRepoRemoteChange;
-
-    fn to_glib(&self) -> ffi::OstreeRepoRemoteChange {
-        match *self {
-            RepoRemoteChange::Add => ffi::OSTREE_REPO_REMOTE_CHANGE_ADD,
-            RepoRemoteChange::AddIfNotExists => ffi::OSTREE_REPO_REMOTE_CHANGE_ADD_IF_NOT_EXISTS,
-            RepoRemoteChange::Delete => ffi::OSTREE_REPO_REMOTE_CHANGE_DELETE,
-            RepoRemoteChange::DeleteIfExists => ffi::OSTREE_REPO_REMOTE_CHANGE_DELETE_IF_EXISTS,
-            RepoRemoteChange::__Unknown(value) => value
-        }
-    }
-}
-
-#[doc(hidden)]
-impl FromGlib<ffi::OstreeRepoRemoteChange> for RepoRemoteChange {
-    fn from_glib(value: ffi::OstreeRepoRemoteChange) -> Self {
-        match value {
-            0 => RepoRemoteChange::Add,
-            1 => RepoRemoteChange::AddIfNotExists,
-            2 => RepoRemoteChange::Delete,
-            3 => RepoRemoteChange::DeleteIfExists,
-            value => RepoRemoteChange::__Unknown(value),
-        }
-    }
-}
-
-#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
-#[derive(Clone, Copy)]
-pub enum RepoResolveRevExtFlags {
-    RepoResolveRevExtNone,
-    #[doc(hidden)]
-    __Unknown(i32),
-}
-
-#[doc(hidden)]
-impl ToGlib for RepoResolveRevExtFlags {
-    type GlibType = ffi::OstreeRepoResolveRevExtFlags;
-
-    fn to_glib(&self) -> ffi::OstreeRepoResolveRevExtFlags {
-        match *self {
-            RepoResolveRevExtFlags::RepoResolveRevExtNone => ffi::OSTREE_REPO_RESOLVE_REV_EXT_NONE,
-            RepoResolveRevExtFlags::__Unknown(value) => value
-        }
-    }
-}
-
-#[doc(hidden)]
-impl FromGlib<ffi::OstreeRepoResolveRevExtFlags> for RepoResolveRevExtFlags {
-    fn from_glib(value: ffi::OstreeRepoResolveRevExtFlags) -> Self {
-        match value {
-            0 => RepoResolveRevExtFlags::RepoResolveRevExtNone,
-            value => RepoResolveRevExtFlags::__Unknown(value),
-        }
-    }
-}
-
-#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
-#[derive(Clone, Copy)]
-pub enum StaticDeltaGenerateOpt {
-    Lowlatency,
-    Major,
-    #[doc(hidden)]
-    __Unknown(i32),
-}
-
-#[doc(hidden)]
-impl ToGlib for StaticDeltaGenerateOpt {
-    type GlibType = ffi::OstreeStaticDeltaGenerateOpt;
-
-    fn to_glib(&self) -> ffi::OstreeStaticDeltaGenerateOpt {
-        match *self {
-            StaticDeltaGenerateOpt::Lowlatency => ffi::OSTREE_STATIC_DELTA_GENERATE_OPT_LOWLATENCY,
-            StaticDeltaGenerateOpt::Major => ffi::OSTREE_STATIC_DELTA_GENERATE_OPT_MAJOR,
-            StaticDeltaGenerateOpt::__Unknown(value) => value
-        }
-    }
-}
-
-#[doc(hidden)]
-impl FromGlib<ffi::OstreeStaticDeltaGenerateOpt> for StaticDeltaGenerateOpt {
-    fn from_glib(value: ffi::OstreeStaticDeltaGenerateOpt) -> Self {
-        match value {
-            0 => StaticDeltaGenerateOpt::Lowlatency,
-            1 => StaticDeltaGenerateOpt::Major,
-            value => StaticDeltaGenerateOpt::__Unknown(value),
-        }
-    }
-}
-
diff --git a/rust-bindings/rust/libostree/src/auto/flags.rs b/rust-bindings/rust/libostree/src/auto/flags.rs
deleted file mode 100644 (file)
index 6e820f4..0000000
+++ /dev/null
@@ -1,108 +0,0 @@
-// This file was generated by gir (https://github.com/gtk-rs/gir @ ffda6f9)
-// from gir-files (https://github.com/gtk-rs/gir-files @ ???)
-// DO NOT EDIT
-
-use ffi;
-use glib::translate::*;
-
-#[cfg(any(feature = "v2015_7", feature = "dox"))]
-bitflags! {
-    pub struct RepoCommitState: u32 {
-        const NORMAL = 0;
-        const PARTIAL = 1;
-    }
-}
-
-#[cfg(any(feature = "v2015_7", feature = "dox"))]
-#[doc(hidden)]
-impl ToGlib for RepoCommitState {
-    type GlibType = ffi::OstreeRepoCommitState;
-
-    fn to_glib(&self) -> ffi::OstreeRepoCommitState {
-        self.bits()
-    }
-}
-
-#[cfg(any(feature = "v2015_7", feature = "dox"))]
-#[doc(hidden)]
-impl FromGlib<ffi::OstreeRepoCommitState> for RepoCommitState {
-    fn from_glib(value: ffi::OstreeRepoCommitState) -> RepoCommitState {
-        RepoCommitState::from_bits_truncate(value)
-    }
-}
-
-bitflags! {
-    pub struct RepoListRefsExtFlags: u32 {
-        const NONE = 0;
-        const ALIASES = 1;
-        const EXCLUDE_REMOTES = 2;
-    }
-}
-
-#[doc(hidden)]
-impl ToGlib for RepoListRefsExtFlags {
-    type GlibType = ffi::OstreeRepoListRefsExtFlags;
-
-    fn to_glib(&self) -> ffi::OstreeRepoListRefsExtFlags {
-        self.bits()
-    }
-}
-
-#[doc(hidden)]
-impl FromGlib<ffi::OstreeRepoListRefsExtFlags> for RepoListRefsExtFlags {
-    fn from_glib(value: ffi::OstreeRepoListRefsExtFlags) -> RepoListRefsExtFlags {
-        RepoListRefsExtFlags::from_bits_truncate(value)
-    }
-}
-
-bitflags! {
-    pub struct RepoPullFlags: u32 {
-        const NONE = 0;
-        const MIRROR = 1;
-        const COMMIT_ONLY = 2;
-        const UNTRUSTED = 4;
-        const BAREUSERONLY_FILES = 8;
-        const TRUSTED_HTTP = 16;
-    }
-}
-
-#[doc(hidden)]
-impl ToGlib for RepoPullFlags {
-    type GlibType = ffi::OstreeRepoPullFlags;
-
-    fn to_glib(&self) -> ffi::OstreeRepoPullFlags {
-        self.bits()
-    }
-}
-
-#[doc(hidden)]
-impl FromGlib<ffi::OstreeRepoPullFlags> for RepoPullFlags {
-    fn from_glib(value: ffi::OstreeRepoPullFlags) -> RepoPullFlags {
-        RepoPullFlags::from_bits_truncate(value)
-    }
-}
-
-bitflags! {
-    pub struct SePolicyRestoreconFlags: u32 {
-        const NONE = 0;
-        const ALLOW_NOLABEL = 1;
-        const KEEP_EXISTING = 2;
-    }
-}
-
-#[doc(hidden)]
-impl ToGlib for SePolicyRestoreconFlags {
-    type GlibType = ffi::OstreeSePolicyRestoreconFlags;
-
-    fn to_glib(&self) -> ffi::OstreeSePolicyRestoreconFlags {
-        self.bits()
-    }
-}
-
-#[doc(hidden)]
-impl FromGlib<ffi::OstreeSePolicyRestoreconFlags> for SePolicyRestoreconFlags {
-    fn from_glib(value: ffi::OstreeSePolicyRestoreconFlags) -> SePolicyRestoreconFlags {
-        SePolicyRestoreconFlags::from_bits_truncate(value)
-    }
-}
-
diff --git a/rust-bindings/rust/libostree/src/auto/functions.rs b/rust-bindings/rust/libostree/src/auto/functions.rs
deleted file mode 100644 (file)
index df0af99..0000000
+++ /dev/null
@@ -1,376 +0,0 @@
-// This file was generated by gir (https://github.com/gtk-rs/gir @ ffda6f9)
-// from gir-files (https://github.com/gtk-rs/gir-files @ ???)
-// DO NOT EDIT
-
-use Error;
-use ObjectType;
-use ffi;
-use gio;
-use glib;
-use glib::object::IsA;
-use glib::translate::*;
-use std::mem;
-use std::ptr;
-
-
-#[cfg(any(feature = "v2017_15", feature = "dox"))]
-pub fn break_hardlink<'a, P: Into<Option<&'a gio::Cancellable>>>(dfd: i32, path: &str, skip_xattrs: bool, cancellable: P) -> Result<(), Error> {
-    let cancellable = cancellable.into();
-    let cancellable = cancellable.to_glib_none();
-    unsafe {
-        let mut error = ptr::null_mut();
-        let _ = ffi::ostree_break_hardlink(dfd, path.to_glib_none().0, skip_xattrs.to_glib(), cancellable.0, &mut error);
-        if error.is_null() { Ok(()) } else { Err(from_glib_full(error)) }
-    }
-}
-
-pub fn check_version(required_year: u32, required_release: u32) -> bool {
-    unsafe {
-        from_glib(ffi::ostree_check_version(required_year, required_release))
-    }
-}
-
-//pub fn checksum_b64_from_bytes(csum: /*Unknown conversion*//*Unimplemented*/FixedArray TypeId { ns_id: 0, id: 3 }; 32) -> Option<String> {
-//    unsafe { TODO: call ffi::ostree_checksum_b64_from_bytes() }
-//}
-
-//pub fn checksum_b64_inplace_from_bytes(csum: /*Unknown conversion*//*Unimplemented*/FixedArray TypeId { ns_id: 0, id: 3 }; 32, buf: &str) {
-//    unsafe { TODO: call ffi::ostree_checksum_b64_inplace_from_bytes() }
-//}
-
-//pub fn checksum_b64_inplace_to_bytes(checksum: /*Unknown conversion*//*Unimplemented*/FixedArray TypeId { ns_id: 0, id: 28 }; 32, buf: u8) {
-//    unsafe { TODO: call ffi::ostree_checksum_b64_inplace_to_bytes() }
-//}
-
-//pub fn checksum_b64_to_bytes(checksum: &str) -> /*Unknown conversion*//*Unimplemented*/FixedArray TypeId { ns_id: 0, id: 3 }; 32 {
-//    unsafe { TODO: call ffi::ostree_checksum_b64_to_bytes() }
-//}
-
-//pub fn checksum_bytes_peek(bytes: &glib::Variant) -> /*Unknown conversion*//*Unimplemented*/FixedArray TypeId { ns_id: 0, id: 3 }; 32 {
-//    unsafe { TODO: call ffi::ostree_checksum_bytes_peek() }
-//}
-
-//pub fn checksum_bytes_peek_validate(bytes: &glib::Variant) -> Result</*Unknown conversion*//*Unimplemented*/FixedArray TypeId { ns_id: 0, id: 3 }; 32, Error> {
-//    unsafe { TODO: call ffi::ostree_checksum_bytes_peek_validate() }
-//}
-
-//pub fn checksum_file<'a, P: IsA<gio::File>, Q: Into<Option<&'a gio::Cancellable>>>(f: &P, objtype: ObjectType, out_csum: /*Unknown conversion*//*Unimplemented*/FixedArray TypeId { ns_id: 0, id: 3 }; 32, cancellable: Q) -> Result<(), Error> {
-//    unsafe { TODO: call ffi::ostree_checksum_file() }
-//}
-
-//pub fn checksum_file_async<'a, P: IsA<gio::File>, Q: Into<Option<&'a gio::Cancellable>>, R: /*Ignored*/gio::AsyncReadyCallback>(f: &P, objtype: ObjectType, io_priority: i32, cancellable: Q, callback: R) {
-//    unsafe { TODO: call ffi::ostree_checksum_file_async() }
-//}
-
-//#[cfg(any(feature = "v2017_13", feature = "dox"))]
-//pub fn checksum_file_at<'a, P: Into<Option</*Unimplemented*/Fundamental: Pointer>>, Q: Into<Option<&'a gio::Cancellable>>>(dfd: i32, path: &str, stbuf: P, objtype: ObjectType, flags: /*Ignored*/ChecksumFlags, out_checksum: &str, cancellable: Q) -> Result<(), Error> {
-//    unsafe { TODO: call ffi::ostree_checksum_file_at() }
-//}
-
-//pub fn checksum_file_from_input<'a, 'b, 'c, P: Into<Option<&'a glib::Variant>>, Q: IsA<gio::InputStream> + 'b, R: Into<Option<&'b Q>>, S: Into<Option<&'c gio::Cancellable>>>(file_info: &gio::FileInfo, xattrs: P, in_: R, objtype: ObjectType, out_csum: /*Unknown conversion*//*Unimplemented*/FixedArray TypeId { ns_id: 0, id: 3 }; 32, cancellable: S) -> Result<(), Error> {
-//    unsafe { TODO: call ffi::ostree_checksum_file_from_input() }
-//}
-
-//pub fn checksum_from_bytes(csum: /*Unknown conversion*//*Unimplemented*/FixedArray TypeId { ns_id: 0, id: 3 }; 32) -> Option<String> {
-//    unsafe { TODO: call ffi::ostree_checksum_from_bytes() }
-//}
-
-pub fn checksum_from_bytes_v(csum_v: &glib::Variant) -> Option<String> {
-    unsafe {
-        from_glib_full(ffi::ostree_checksum_from_bytes_v(csum_v.to_glib_none().0))
-    }
-}
-
-//pub fn checksum_inplace_from_bytes(csum: /*Unknown conversion*//*Unimplemented*/FixedArray TypeId { ns_id: 0, id: 3 }; 32, buf: &str) {
-//    unsafe { TODO: call ffi::ostree_checksum_inplace_from_bytes() }
-//}
-
-//pub fn checksum_to_bytes(checksum: &str) -> /*Unknown conversion*//*Unimplemented*/FixedArray TypeId { ns_id: 0, id: 3 }; 32 {
-//    unsafe { TODO: call ffi::ostree_checksum_to_bytes() }
-//}
-
-pub fn checksum_to_bytes_v(checksum: &str) -> Option<glib::Variant> {
-    unsafe {
-        from_glib_full(ffi::ostree_checksum_to_bytes_v(checksum.to_glib_none().0))
-    }
-}
-
-//pub fn cmd__private__() -> /*Ignored*/Option<CmdPrivateVTable> {
-//    unsafe { TODO: call ffi::ostree_cmd__private__() }
-//}
-
-pub fn commit_get_content_checksum(commit_variant: &glib::Variant) -> Option<String> {
-    unsafe {
-        from_glib_full(ffi::ostree_commit_get_content_checksum(commit_variant.to_glib_none().0))
-    }
-}
-
-pub fn commit_get_parent(commit_variant: &glib::Variant) -> Option<String> {
-    unsafe {
-        from_glib_full(ffi::ostree_commit_get_parent(commit_variant.to_glib_none().0))
-    }
-}
-
-pub fn commit_get_timestamp(commit_variant: &glib::Variant) -> u64 {
-    unsafe {
-        ffi::ostree_commit_get_timestamp(commit_variant.to_glib_none().0)
-    }
-}
-
-pub fn content_file_parse<'a, P: IsA<gio::File>, Q: Into<Option<&'a gio::Cancellable>>>(compressed: bool, content_path: &P, trusted: bool, cancellable: Q) -> Result<(gio::InputStream, gio::FileInfo, glib::Variant), Error> {
-    let cancellable = cancellable.into();
-    let cancellable = cancellable.to_glib_none();
-    unsafe {
-        let mut out_input = ptr::null_mut();
-        let mut out_file_info = ptr::null_mut();
-        let mut out_xattrs = ptr::null_mut();
-        let mut error = ptr::null_mut();
-        let _ = ffi::ostree_content_file_parse(compressed.to_glib(), content_path.to_glib_none().0, trusted.to_glib(), &mut out_input, &mut out_file_info, &mut out_xattrs, cancellable.0, &mut error);
-        if error.is_null() { Ok((from_glib_full(out_input), from_glib_full(out_file_info), from_glib_full(out_xattrs))) } else { Err(from_glib_full(error)) }
-    }
-}
-
-pub fn content_file_parse_at<'a, P: Into<Option<&'a gio::Cancellable>>>(compressed: bool, parent_dfd: i32, path: &str, trusted: bool, cancellable: P) -> Result<(gio::InputStream, gio::FileInfo, glib::Variant), Error> {
-    let cancellable = cancellable.into();
-    let cancellable = cancellable.to_glib_none();
-    unsafe {
-        let mut out_input = ptr::null_mut();
-        let mut out_file_info = ptr::null_mut();
-        let mut out_xattrs = ptr::null_mut();
-        let mut error = ptr::null_mut();
-        let _ = ffi::ostree_content_file_parse_at(compressed.to_glib(), parent_dfd, path.to_glib_none().0, trusted.to_glib(), &mut out_input, &mut out_file_info, &mut out_xattrs, cancellable.0, &mut error);
-        if error.is_null() { Ok((from_glib_full(out_input), from_glib_full(out_file_info), from_glib_full(out_xattrs))) } else { Err(from_glib_full(error)) }
-    }
-}
-
-pub fn content_stream_parse<'a, P: IsA<gio::InputStream>, Q: Into<Option<&'a gio::Cancellable>>>(compressed: bool, input: &P, input_length: u64, trusted: bool, cancellable: Q) -> Result<(gio::InputStream, gio::FileInfo, glib::Variant), Error> {
-    let cancellable = cancellable.into();
-    let cancellable = cancellable.to_glib_none();
-    unsafe {
-        let mut out_input = ptr::null_mut();
-        let mut out_file_info = ptr::null_mut();
-        let mut out_xattrs = ptr::null_mut();
-        let mut error = ptr::null_mut();
-        let _ = ffi::ostree_content_stream_parse(compressed.to_glib(), input.to_glib_none().0, input_length, trusted.to_glib(), &mut out_input, &mut out_file_info, &mut out_xattrs, cancellable.0, &mut error);
-        if error.is_null() { Ok((from_glib_full(out_input), from_glib_full(out_file_info), from_glib_full(out_xattrs))) } else { Err(from_glib_full(error)) }
-    }
-}
-
-pub fn create_directory_metadata<'a, P: Into<Option<&'a glib::Variant>>>(dir_info: &gio::FileInfo, xattrs: P) -> Option<glib::Variant> {
-    let xattrs = xattrs.into();
-    let xattrs = xattrs.to_glib_none();
-    unsafe {
-        from_glib_full(ffi::ostree_create_directory_metadata(dir_info.to_glib_none().0, xattrs.0))
-    }
-}
-
-//pub fn diff_dirs<'a, P: IsA<gio::File>, Q: IsA<gio::File>, R: Into<Option<&'a gio::Cancellable>>>(flags: /*Ignored*/DiffFlags, a: &P, b: &Q, modified: /*Unknown conversion*//*Unimplemented*/PtrArray TypeId { ns_id: 1, id: 24 }, removed: /*Unknown conversion*//*Unimplemented*/PtrArray TypeId { ns_id: 4, id: 15 }, added: /*Unknown conversion*//*Unimplemented*/PtrArray TypeId { ns_id: 4, id: 15 }, cancellable: R) -> Result<(), Error> {
-//    unsafe { TODO: call ffi::ostree_diff_dirs() }
-//}
-
-//pub fn diff_dirs_with_options<'a, 'b, P: IsA<gio::File>, Q: IsA<gio::File>, R: Into<Option<&'a /*Ignored*/DiffDirsOptions>>, S: Into<Option<&'b gio::Cancellable>>>(flags: /*Ignored*/DiffFlags, a: &P, b: &Q, modified: /*Unknown conversion*//*Unimplemented*/PtrArray TypeId { ns_id: 1, id: 24 }, removed: /*Unknown conversion*//*Unimplemented*/PtrArray TypeId { ns_id: 4, id: 15 }, added: /*Unknown conversion*//*Unimplemented*/PtrArray TypeId { ns_id: 4, id: 15 }, options: R, cancellable: S) -> Result<(), Error> {
-//    unsafe { TODO: call ffi::ostree_diff_dirs_with_options() }
-//}
-
-//pub fn diff_print<P: IsA<gio::File>, Q: IsA<gio::File>>(a: &P, b: &Q, modified: /*Unknown conversion*//*Unimplemented*/PtrArray TypeId { ns_id: 1, id: 24 }, removed: /*Unknown conversion*//*Unimplemented*/PtrArray TypeId { ns_id: 4, id: 15 }, added: /*Unknown conversion*//*Unimplemented*/PtrArray TypeId { ns_id: 4, id: 15 }) {
-//    unsafe { TODO: call ffi::ostree_diff_print() }
-//}
-
-//pub fn gpg_error_quark() -> /*Ignored*/glib::Quark {
-//    unsafe { TODO: call ffi::ostree_gpg_error_quark() }
-//}
-
-//pub fn hash_object_name<P: Into<Option</*Unimplemented*/Fundamental: Pointer>>>(a: P) -> u32 {
-//    unsafe { TODO: call ffi::ostree_hash_object_name() }
-//}
-
-//pub fn metadata_variant_type(objtype: ObjectType) -> /*Ignored*/Option<glib::VariantType> {
-//    unsafe { TODO: call ffi::ostree_metadata_variant_type() }
-//}
-
-pub fn object_from_string(str: &str) -> (String, ObjectType) {
-    unsafe {
-        let mut out_checksum = ptr::null_mut();
-        let mut out_objtype = mem::uninitialized();
-        ffi::ostree_object_from_string(str.to_glib_none().0, &mut out_checksum, &mut out_objtype);
-        (from_glib_full(out_checksum), from_glib(out_objtype))
-    }
-}
-
-pub fn object_name_deserialize(variant: &glib::Variant) -> (String, ObjectType) {
-    unsafe {
-        let mut out_checksum = ptr::null();
-        let mut out_objtype = mem::uninitialized();
-        ffi::ostree_object_name_deserialize(variant.to_glib_none().0, &mut out_checksum, &mut out_objtype);
-        (from_glib_none(out_checksum), from_glib(out_objtype))
-    }
-}
-
-pub fn object_name_serialize(checksum: &str, objtype: ObjectType) -> Option<glib::Variant> {
-    unsafe {
-        from_glib_none(ffi::ostree_object_name_serialize(checksum.to_glib_none().0, objtype.to_glib()))
-    }
-}
-
-pub fn object_to_string(checksum: &str, objtype: ObjectType) -> Option<String> {
-    unsafe {
-        from_glib_full(ffi::ostree_object_to_string(checksum.to_glib_none().0, objtype.to_glib()))
-    }
-}
-
-pub fn object_type_from_string(str: &str) -> ObjectType {
-    unsafe {
-        from_glib(ffi::ostree_object_type_from_string(str.to_glib_none().0))
-    }
-}
-
-pub fn object_type_to_string(objtype: ObjectType) -> Option<String> {
-    unsafe {
-        from_glib_none(ffi::ostree_object_type_to_string(objtype.to_glib()))
-    }
-}
-
-pub fn parse_refspec(refspec: &str) -> Result<(Option<String>, String), Error> {
-    unsafe {
-        let mut out_remote = ptr::null_mut();
-        let mut out_ref = ptr::null_mut();
-        let mut error = ptr::null_mut();
-        let _ = ffi::ostree_parse_refspec(refspec.to_glib_none().0, &mut out_remote, &mut out_ref, &mut error);
-        if error.is_null() { Ok((from_glib_full(out_remote), from_glib_full(out_ref))) } else { Err(from_glib_full(error)) }
-    }
-}
-
-pub fn raw_file_to_archive_z2_stream<'a, 'b, P: IsA<gio::InputStream>, Q: Into<Option<&'a glib::Variant>>, R: Into<Option<&'b gio::Cancellable>>>(input: &P, file_info: &gio::FileInfo, xattrs: Q, cancellable: R) -> Result<gio::InputStream, Error> {
-    let xattrs = xattrs.into();
-    let xattrs = xattrs.to_glib_none();
-    let cancellable = cancellable.into();
-    let cancellable = cancellable.to_glib_none();
-    unsafe {
-        let mut out_input = ptr::null_mut();
-        let mut error = ptr::null_mut();
-        let _ = ffi::ostree_raw_file_to_archive_z2_stream(input.to_glib_none().0, file_info.to_glib_none().0, xattrs.0, &mut out_input, cancellable.0, &mut error);
-        if error.is_null() { Ok(from_glib_full(out_input)) } else { Err(from_glib_full(error)) }
-    }
-}
-
-#[cfg(any(feature = "v2017_3", feature = "dox"))]
-pub fn raw_file_to_archive_z2_stream_with_options<'a, 'b, 'c, P: IsA<gio::InputStream>, Q: Into<Option<&'a glib::Variant>>, R: Into<Option<&'b glib::Variant>>, S: Into<Option<&'c gio::Cancellable>>>(input: &P, file_info: &gio::FileInfo, xattrs: Q, options: R, cancellable: S) -> Result<gio::InputStream, Error> {
-    let xattrs = xattrs.into();
-    let xattrs = xattrs.to_glib_none();
-    let options = options.into();
-    let options = options.to_glib_none();
-    let cancellable = cancellable.into();
-    let cancellable = cancellable.to_glib_none();
-    unsafe {
-        let mut out_input = ptr::null_mut();
-        let mut error = ptr::null_mut();
-        let _ = ffi::ostree_raw_file_to_archive_z2_stream_with_options(input.to_glib_none().0, file_info.to_glib_none().0, xattrs.0, options.0, &mut out_input, cancellable.0, &mut error);
-        if error.is_null() { Ok(from_glib_full(out_input)) } else { Err(from_glib_full(error)) }
-    }
-}
-
-pub fn raw_file_to_content_stream<'a, 'b, P: IsA<gio::InputStream>, Q: Into<Option<&'a glib::Variant>>, R: Into<Option<&'b gio::Cancellable>>>(input: &P, file_info: &gio::FileInfo, xattrs: Q, cancellable: R) -> Result<(gio::InputStream, u64), Error> {
-    let xattrs = xattrs.into();
-    let xattrs = xattrs.to_glib_none();
-    let cancellable = cancellable.into();
-    let cancellable = cancellable.to_glib_none();
-    unsafe {
-        let mut out_input = ptr::null_mut();
-        let mut out_length = mem::uninitialized();
-        let mut error = ptr::null_mut();
-        let _ = ffi::ostree_raw_file_to_content_stream(input.to_glib_none().0, file_info.to_glib_none().0, xattrs.0, &mut out_input, &mut out_length, cancellable.0, &mut error);
-        if error.is_null() { Ok((from_glib_full(out_input), out_length)) } else { Err(from_glib_full(error)) }
-    }
-}
-
-pub fn validate_checksum_string(sha256: &str) -> Result<(), Error> {
-    unsafe {
-        let mut error = ptr::null_mut();
-        let _ = ffi::ostree_validate_checksum_string(sha256.to_glib_none().0, &mut error);
-        if error.is_null() { Ok(()) } else { Err(from_glib_full(error)) }
-    }
-}
-
-#[cfg(any(feature = "v2018_6", feature = "dox"))]
-pub fn validate_collection_id<'a, P: Into<Option<&'a str>>>(collection_id: P) -> Result<(), Error> {
-    let collection_id = collection_id.into();
-    let collection_id = collection_id.to_glib_none();
-    unsafe {
-        let mut error = ptr::null_mut();
-        let _ = ffi::ostree_validate_collection_id(collection_id.0, &mut error);
-        if error.is_null() { Ok(()) } else { Err(from_glib_full(error)) }
-    }
-}
-
-#[cfg(any(feature = "v2017_8", feature = "dox"))]
-pub fn validate_remote_name(remote_name: &str) -> Result<(), Error> {
-    unsafe {
-        let mut error = ptr::null_mut();
-        let _ = ffi::ostree_validate_remote_name(remote_name.to_glib_none().0, &mut error);
-        if error.is_null() { Ok(()) } else { Err(from_glib_full(error)) }
-    }
-}
-
-pub fn validate_rev(rev: &str) -> Result<(), Error> {
-    unsafe {
-        let mut error = ptr::null_mut();
-        let _ = ffi::ostree_validate_rev(rev.to_glib_none().0, &mut error);
-        if error.is_null() { Ok(()) } else { Err(from_glib_full(error)) }
-    }
-}
-
-pub fn validate_structureof_checksum_string(checksum: &str) -> Result<(), Error> {
-    unsafe {
-        let mut error = ptr::null_mut();
-        let _ = ffi::ostree_validate_structureof_checksum_string(checksum.to_glib_none().0, &mut error);
-        if error.is_null() { Ok(()) } else { Err(from_glib_full(error)) }
-    }
-}
-
-pub fn validate_structureof_commit(commit: &glib::Variant) -> Result<(), Error> {
-    unsafe {
-        let mut error = ptr::null_mut();
-        let _ = ffi::ostree_validate_structureof_commit(commit.to_glib_none().0, &mut error);
-        if error.is_null() { Ok(()) } else { Err(from_glib_full(error)) }
-    }
-}
-
-pub fn validate_structureof_csum_v(checksum: &glib::Variant) -> Result<(), Error> {
-    unsafe {
-        let mut error = ptr::null_mut();
-        let _ = ffi::ostree_validate_structureof_csum_v(checksum.to_glib_none().0, &mut error);
-        if error.is_null() { Ok(()) } else { Err(from_glib_full(error)) }
-    }
-}
-
-pub fn validate_structureof_dirmeta(dirmeta: &glib::Variant) -> Result<(), Error> {
-    unsafe {
-        let mut error = ptr::null_mut();
-        let _ = ffi::ostree_validate_structureof_dirmeta(dirmeta.to_glib_none().0, &mut error);
-        if error.is_null() { Ok(()) } else { Err(from_glib_full(error)) }
-    }
-}
-
-pub fn validate_structureof_dirtree(dirtree: &glib::Variant) -> Result<(), Error> {
-    unsafe {
-        let mut error = ptr::null_mut();
-        let _ = ffi::ostree_validate_structureof_dirtree(dirtree.to_glib_none().0, &mut error);
-        if error.is_null() { Ok(()) } else { Err(from_glib_full(error)) }
-    }
-}
-
-pub fn validate_structureof_file_mode(mode: u32) -> Result<(), Error> {
-    unsafe {
-        let mut error = ptr::null_mut();
-        let _ = ffi::ostree_validate_structureof_file_mode(mode, &mut error);
-        if error.is_null() { Ok(()) } else { Err(from_glib_full(error)) }
-    }
-}
-
-pub fn validate_structureof_objtype(objtype: u8) -> Result<(), Error> {
-    unsafe {
-        let mut error = ptr::null_mut();
-        let _ = ffi::ostree_validate_structureof_objtype(objtype, &mut error);
-        if error.is_null() { Ok(()) } else { Err(from_glib_full(error)) }
-    }
-}
diff --git a/rust-bindings/rust/libostree/src/auto/gpg_verify_result.rs b/rust-bindings/rust/libostree/src/auto/gpg_verify_result.rs
deleted file mode 100644 (file)
index ec3e07c..0000000
+++ /dev/null
@@ -1,96 +0,0 @@
-// This file was generated by gir (https://github.com/gtk-rs/gir @ ffda6f9)
-// from gir-files (https://github.com/gtk-rs/gir-files @ ???)
-// DO NOT EDIT
-
-use Error;
-use GpgSignatureFormatFlags;
-use ffi;
-use glib;
-use glib::object::IsA;
-use glib::translate::*;
-use glib_ffi;
-use gobject_ffi;
-use std::mem;
-use std::ptr;
-
-glib_wrapper! {
-    pub struct GpgVerifyResult(Object<ffi::OstreeGpgVerifyResult>);
-
-    match fn {
-        get_type => || ffi::ostree_gpg_verify_result_get_type(),
-    }
-}
-
-impl GpgVerifyResult {
-    pub fn describe_variant<'a, P: Into<Option<&'a str>>>(variant: &glib::Variant, output_buffer: &mut glib::String, line_prefix: P, flags: GpgSignatureFormatFlags) {
-        let line_prefix = line_prefix.into();
-        let line_prefix = line_prefix.to_glib_none();
-        unsafe {
-            ffi::ostree_gpg_verify_result_describe_variant(variant.to_glib_none().0, output_buffer.to_glib_none_mut().0, line_prefix.0, flags.to_glib());
-        }
-    }
-}
-
-pub trait GpgVerifyResultExt {
-    fn count_all(&self) -> u32;
-
-    fn count_valid(&self) -> u32;
-
-    fn describe<'a, P: Into<Option<&'a str>>>(&self, signature_index: u32, output_buffer: &mut glib::String, line_prefix: P, flags: GpgSignatureFormatFlags);
-
-    //fn get(&self, signature_index: u32, attrs: /*Unimplemented*/&CArray TypeId { ns_id: 1, id: 26 }) -> Option<glib::Variant>;
-
-    fn get_all(&self, signature_index: u32) -> Option<glib::Variant>;
-
-    fn lookup(&self, key_id: &str) -> Option<u32>;
-
-    fn require_valid_signature(&self) -> Result<(), Error>;
-}
-
-impl<O: IsA<GpgVerifyResult>> GpgVerifyResultExt for O {
-    fn count_all(&self) -> u32 {
-        unsafe {
-            ffi::ostree_gpg_verify_result_count_all(self.to_glib_none().0)
-        }
-    }
-
-    fn count_valid(&self) -> u32 {
-        unsafe {
-            ffi::ostree_gpg_verify_result_count_valid(self.to_glib_none().0)
-        }
-    }
-
-    fn describe<'a, P: Into<Option<&'a str>>>(&self, signature_index: u32, output_buffer: &mut glib::String, line_prefix: P, flags: GpgSignatureFormatFlags) {
-        let line_prefix = line_prefix.into();
-        let line_prefix = line_prefix.to_glib_none();
-        unsafe {
-            ffi::ostree_gpg_verify_result_describe(self.to_glib_none().0, signature_index, output_buffer.to_glib_none_mut().0, line_prefix.0, flags.to_glib());
-        }
-    }
-
-    //fn get(&self, signature_index: u32, attrs: /*Unimplemented*/&CArray TypeId { ns_id: 1, id: 26 }) -> Option<glib::Variant> {
-    //    unsafe { TODO: call ffi::ostree_gpg_verify_result_get() }
-    //}
-
-    fn get_all(&self, signature_index: u32) -> Option<glib::Variant> {
-        unsafe {
-            from_glib_full(ffi::ostree_gpg_verify_result_get_all(self.to_glib_none().0, signature_index))
-        }
-    }
-
-    fn lookup(&self, key_id: &str) -> Option<u32> {
-        unsafe {
-            let mut out_signature_index = mem::uninitialized();
-            let ret = from_glib(ffi::ostree_gpg_verify_result_lookup(self.to_glib_none().0, key_id.to_glib_none().0, &mut out_signature_index));
-            if ret { Some(out_signature_index) } else { None }
-        }
-    }
-
-    fn require_valid_signature(&self) -> Result<(), Error> {
-        unsafe {
-            let mut error = ptr::null_mut();
-            let _ = ffi::ostree_gpg_verify_result_require_valid_signature(self.to_glib_none().0, &mut error);
-            if error.is_null() { Ok(()) } else { Err(from_glib_full(error)) }
-        }
-    }
-}
diff --git a/rust-bindings/rust/libostree/src/auto/mod.rs b/rust-bindings/rust/libostree/src/auto/mod.rs
deleted file mode 100644 (file)
index 59aaea8..0000000
+++ /dev/null
@@ -1,102 +0,0 @@
-// This file was generated by gir (https://github.com/gtk-rs/gir @ ffda6f9)
-// from gir-files (https://github.com/gtk-rs/gir-files @ ???)
-// DO NOT EDIT
-
-mod async_progress;
-pub use self::async_progress::AsyncProgress;
-pub use self::async_progress::AsyncProgressExt;
-
-mod gpg_verify_result;
-pub use self::gpg_verify_result::GpgVerifyResult;
-pub use self::gpg_verify_result::GpgVerifyResultExt;
-
-mod mutable_tree;
-pub use self::mutable_tree::MutableTree;
-pub use self::mutable_tree::MutableTreeExt;
-
-mod repo;
-pub use self::repo::Repo;
-pub use self::repo::RepoExt;
-
-mod repo_file;
-pub use self::repo_file::RepoFile;
-pub use self::repo_file::RepoFileExt;
-
-mod se_policy;
-pub use self::se_policy::SePolicy;
-pub use self::se_policy::SePolicyExt;
-
-#[cfg(any(feature = "v2018_6", feature = "dox"))]
-mod collection_ref;
-#[cfg(any(feature = "v2018_6", feature = "dox"))]
-pub use self::collection_ref::CollectionRef;
-
-#[cfg(any(feature = "v2018_6", feature = "dox"))]
-mod remote;
-#[cfg(any(feature = "v2018_6", feature = "dox"))]
-pub use self::remote::Remote;
-
-mod repo_commit_modifier;
-pub use self::repo_commit_modifier::RepoCommitModifier;
-
-mod repo_dev_ino_cache;
-pub use self::repo_dev_ino_cache::RepoDevInoCache;
-
-mod repo_transaction_stats;
-pub use self::repo_transaction_stats::RepoTransactionStats;
-
-mod enums;
-pub use self::enums::GpgSignatureFormatFlags;
-pub use self::enums::ObjectType;
-pub use self::enums::RepoCheckoutMode;
-pub use self::enums::RepoCheckoutOverwriteMode;
-pub use self::enums::RepoMode;
-pub use self::enums::RepoPruneFlags;
-pub use self::enums::RepoRemoteChange;
-pub use self::enums::RepoResolveRevExtFlags;
-pub use self::enums::StaticDeltaGenerateOpt;
-
-mod flags;
-#[cfg(any(feature = "v2015_7", feature = "dox"))]
-pub use self::flags::RepoCommitState;
-pub use self::flags::RepoListRefsExtFlags;
-pub use self::flags::RepoPullFlags;
-pub use self::flags::SePolicyRestoreconFlags;
-
-pub mod functions;
-
-mod constants;
-pub use self::constants::COMMIT_GVARIANT_STRING;
-#[cfg(any(feature = "v2018_6", feature = "dox"))]
-pub use self::constants::COMMIT_META_KEY_COLLECTION_BINDING;
-#[cfg(any(feature = "v2017_7", feature = "dox"))]
-pub use self::constants::COMMIT_META_KEY_ENDOFLIFE;
-#[cfg(any(feature = "v2017_7", feature = "dox"))]
-pub use self::constants::COMMIT_META_KEY_ENDOFLIFE_REBASE;
-#[cfg(any(feature = "v2017_9", feature = "dox"))]
-pub use self::constants::COMMIT_META_KEY_REF_BINDING;
-#[cfg(any(feature = "v2017_13", feature = "dox"))]
-pub use self::constants::COMMIT_META_KEY_SOURCE_TITLE;
-#[cfg(any(feature = "v2014_9", feature = "dox"))]
-pub use self::constants::COMMIT_META_KEY_VERSION;
-pub use self::constants::DIRMETA_GVARIANT_STRING;
-pub use self::constants::FILEMETA_GVARIANT_STRING;
-#[cfg(any(feature = "v2018_3", feature = "dox"))]
-pub use self::constants::ORIGIN_TRANSIENT_GROUP;
-#[cfg(any(feature = "v2018_6", feature = "dox"))]
-pub use self::constants::REPO_METADATA_REF;
-pub use self::constants::SUMMARY_GVARIANT_STRING;
-pub use self::constants::SUMMARY_SIG_GVARIANT_STRING;
-pub use self::constants::TREE_GVARIANT_STRING;
-#[cfg(any(feature = "v2017_4", feature = "dox"))]
-pub use self::constants::VERSION_S;
-
-#[doc(hidden)]
-pub mod traits {
-    pub use super::AsyncProgressExt;
-    pub use super::GpgVerifyResultExt;
-    pub use super::MutableTreeExt;
-    pub use super::RepoExt;
-    pub use super::RepoFileExt;
-    pub use super::SePolicyExt;
-}
diff --git a/rust-bindings/rust/libostree/src/auto/mutable_tree.rs b/rust-bindings/rust/libostree/src/auto/mutable_tree.rs
deleted file mode 100644 (file)
index 3e6cb5e..0000000
+++ /dev/null
@@ -1,142 +0,0 @@
-// This file was generated by gir (https://github.com/gtk-rs/gir @ ffda6f9)
-// from gir-files (https://github.com/gtk-rs/gir-files @ ???)
-// DO NOT EDIT
-
-use Error;
-use Repo;
-use ffi;
-use glib::object::IsA;
-use glib::translate::*;
-use glib_ffi;
-use gobject_ffi;
-use std::mem;
-use std::ptr;
-
-glib_wrapper! {
-    pub struct MutableTree(Object<ffi::OstreeMutableTree, ffi::OstreeMutableTreeClass>);
-
-    match fn {
-        get_type => || ffi::ostree_mutable_tree_get_type(),
-    }
-}
-
-impl MutableTree {
-    pub fn new() -> MutableTree {
-        unsafe {
-            from_glib_full(ffi::ostree_mutable_tree_new())
-        }
-    }
-
-    pub fn new_from_checksum(repo: &Repo, contents_checksum: &str, metadata_checksum: &str) -> MutableTree {
-        unsafe {
-            from_glib_full(ffi::ostree_mutable_tree_new_from_checksum(repo.to_glib_none().0, contents_checksum.to_glib_none().0, metadata_checksum.to_glib_none().0))
-        }
-    }
-}
-
-impl Default for MutableTree {
-    fn default() -> Self {
-        Self::new()
-    }
-}
-
-pub trait MutableTreeExt {
-    #[cfg(any(feature = "v2018_7", feature = "dox"))]
-    fn check_error(&self) -> Result<(), Error>;
-
-    fn ensure_dir(&self, name: &str) -> Result<MutableTree, Error>;
-
-    //fn ensure_parent_dirs(&self, split_path: /*Unknown conversion*//*Unimplemented*/PtrArray TypeId { ns_id: 0, id: 28 }, metadata_checksum: &str) -> Result<MutableTree, Error>;
-
-    fn fill_empty_from_dirtree(&self, repo: &Repo, contents_checksum: &str, metadata_checksum: &str) -> bool;
-
-    fn get_contents_checksum(&self) -> Option<String>;
-
-    //fn get_files(&self) -> /*Unknown conversion*//*Unimplemented*/HashTable TypeId { ns_id: 0, id: 28 }/TypeId { ns_id: 0, id: 28 };
-
-    fn get_metadata_checksum(&self) -> Option<String>;
-
-    //fn get_subdirs(&self) -> /*Unknown conversion*//*Unimplemented*/HashTable TypeId { ns_id: 0, id: 28 }/TypeId { ns_id: 1, id: 37 };
-
-    fn replace_file(&self, name: &str, checksum: &str) -> Result<(), Error>;
-
-    fn set_contents_checksum(&self, checksum: &str);
-
-    fn set_metadata_checksum(&self, checksum: &str);
-
-    //fn walk(&self, split_path: /*Unknown conversion*//*Unimplemented*/PtrArray TypeId { ns_id: 0, id: 28 }, start: u32) -> Result<MutableTree, Error>;
-}
-
-impl<O: IsA<MutableTree>> MutableTreeExt for O {
-    #[cfg(any(feature = "v2018_7", feature = "dox"))]
-    fn check_error(&self) -> Result<(), Error> {
-        unsafe {
-            let mut error = ptr::null_mut();
-            let _ = ffi::ostree_mutable_tree_check_error(self.to_glib_none().0, &mut error);
-            if error.is_null() { Ok(()) } else { Err(from_glib_full(error)) }
-        }
-    }
-
-    fn ensure_dir(&self, name: &str) -> Result<MutableTree, Error> {
-        unsafe {
-            let mut out_subdir = ptr::null_mut();
-            let mut error = ptr::null_mut();
-            let _ = ffi::ostree_mutable_tree_ensure_dir(self.to_glib_none().0, name.to_glib_none().0, &mut out_subdir, &mut error);
-            if error.is_null() { Ok(from_glib_full(out_subdir)) } else { Err(from_glib_full(error)) }
-        }
-    }
-
-    //fn ensure_parent_dirs(&self, split_path: /*Unknown conversion*//*Unimplemented*/PtrArray TypeId { ns_id: 0, id: 28 }, metadata_checksum: &str) -> Result<MutableTree, Error> {
-    //    unsafe { TODO: call ffi::ostree_mutable_tree_ensure_parent_dirs() }
-    //}
-
-    fn fill_empty_from_dirtree(&self, repo: &Repo, contents_checksum: &str, metadata_checksum: &str) -> bool {
-        unsafe {
-            from_glib(ffi::ostree_mutable_tree_fill_empty_from_dirtree(self.to_glib_none().0, repo.to_glib_none().0, contents_checksum.to_glib_none().0, metadata_checksum.to_glib_none().0))
-        }
-    }
-
-    fn get_contents_checksum(&self) -> Option<String> {
-        unsafe {
-            from_glib_none(ffi::ostree_mutable_tree_get_contents_checksum(self.to_glib_none().0))
-        }
-    }
-
-    //fn get_files(&self) -> /*Unknown conversion*//*Unimplemented*/HashTable TypeId { ns_id: 0, id: 28 }/TypeId { ns_id: 0, id: 28 } {
-    //    unsafe { TODO: call ffi::ostree_mutable_tree_get_files() }
-    //}
-
-    fn get_metadata_checksum(&self) -> Option<String> {
-        unsafe {
-            from_glib_none(ffi::ostree_mutable_tree_get_metadata_checksum(self.to_glib_none().0))
-        }
-    }
-
-    //fn get_subdirs(&self) -> /*Unknown conversion*//*Unimplemented*/HashTable TypeId { ns_id: 0, id: 28 }/TypeId { ns_id: 1, id: 37 } {
-    //    unsafe { TODO: call ffi::ostree_mutable_tree_get_subdirs() }
-    //}
-
-    fn replace_file(&self, name: &str, checksum: &str) -> Result<(), Error> {
-        unsafe {
-            let mut error = ptr::null_mut();
-            let _ = ffi::ostree_mutable_tree_replace_file(self.to_glib_none().0, name.to_glib_none().0, checksum.to_glib_none().0, &mut error);
-            if error.is_null() { Ok(()) } else { Err(from_glib_full(error)) }
-        }
-    }
-
-    fn set_contents_checksum(&self, checksum: &str) {
-        unsafe {
-            ffi::ostree_mutable_tree_set_contents_checksum(self.to_glib_none().0, checksum.to_glib_none().0);
-        }
-    }
-
-    fn set_metadata_checksum(&self, checksum: &str) {
-        unsafe {
-            ffi::ostree_mutable_tree_set_metadata_checksum(self.to_glib_none().0, checksum.to_glib_none().0);
-        }
-    }
-
-    //fn walk(&self, split_path: /*Unknown conversion*//*Unimplemented*/PtrArray TypeId { ns_id: 0, id: 28 }, start: u32) -> Result<MutableTree, Error> {
-    //    unsafe { TODO: call ffi::ostree_mutable_tree_walk() }
-    //}
-}
diff --git a/rust-bindings/rust/libostree/src/auto/remote.rs b/rust-bindings/rust/libostree/src/auto/remote.rs
deleted file mode 100644 (file)
index 520f1ce..0000000
+++ /dev/null
@@ -1,37 +0,0 @@
-// This file was generated by gir (https://github.com/gtk-rs/gir @ ffda6f9)
-// from gir-files (https://github.com/gtk-rs/gir-files @ ???)
-// DO NOT EDIT
-
-use ffi;
-use glib::translate::*;
-use glib_ffi;
-use gobject_ffi;
-use std::mem;
-use std::ptr;
-
-glib_wrapper! {
-    #[derive(Debug, PartialEq, Eq, PartialOrd, Ord, Hash)]
-    pub struct Remote(Shared<ffi::OstreeRemote>);
-
-    match fn {
-        ref => |ptr| ffi::ostree_remote_ref(ptr),
-        unref => |ptr| ffi::ostree_remote_unref(ptr),
-        get_type => || ffi::ostree_remote_get_type(),
-    }
-}
-
-impl Remote {
-    #[cfg(any(feature = "v2018_6", feature = "dox"))]
-    pub fn get_name(&self) -> Option<String> {
-        unsafe {
-            from_glib_none(ffi::ostree_remote_get_name(self.to_glib_none().0))
-        }
-    }
-
-    #[cfg(any(feature = "v2018_6", feature = "dox"))]
-    pub fn get_url(&self) -> Option<String> {
-        unsafe {
-            from_glib_full(ffi::ostree_remote_get_url(self.to_glib_none().0))
-        }
-    }
-}
diff --git a/rust-bindings/rust/libostree/src/auto/repo.rs b/rust-bindings/rust/libostree/src/auto/repo.rs
deleted file mode 100644 (file)
index d7bdd3d..0000000
+++ /dev/null
@@ -1,1378 +0,0 @@
-// This file was generated by gir (https://github.com/gtk-rs/gir @ ffda6f9)
-// from gir-files (https://github.com/gtk-rs/gir-files @ ???)
-// DO NOT EDIT
-
-use AsyncProgress;
-#[cfg(any(feature = "v2018_6", feature = "dox"))]
-use CollectionRef;
-use Error;
-use GpgVerifyResult;
-use MutableTree;
-use ObjectType;
-#[cfg(any(feature = "v2018_6", feature = "dox"))]
-use Remote;
-use RepoCheckoutMode;
-use RepoCheckoutOverwriteMode;
-use RepoCommitModifier;
-#[cfg(any(feature = "v2015_7", feature = "dox"))]
-use RepoCommitState;
-use RepoFile;
-use RepoMode;
-use RepoPruneFlags;
-use RepoPullFlags;
-use RepoRemoteChange;
-use RepoResolveRevExtFlags;
-use RepoTransactionStats;
-use StaticDeltaGenerateOpt;
-use ffi;
-use gio;
-use glib;
-use glib::StaticType;
-use glib::Value;
-use glib::object::Downcast;
-use glib::object::IsA;
-use glib::signal::SignalHandlerId;
-use glib::signal::connect;
-use glib::translate::*;
-use glib_ffi;
-use gobject_ffi;
-use libc;
-use std::boxed::Box as Box_;
-use std::mem;
-use std::mem::transmute;
-use std::ptr;
-
-glib_wrapper! {
-    pub struct Repo(Object<ffi::OstreeRepo>);
-
-    match fn {
-        get_type => || ffi::ostree_repo_get_type(),
-    }
-}
-
-impl Repo {
-    pub fn new<P: IsA<gio::File>>(path: &P) -> Repo {
-        unsafe {
-            from_glib_full(ffi::ostree_repo_new(path.to_glib_none().0))
-        }
-    }
-
-    pub fn new_default() -> Repo {
-        unsafe {
-            from_glib_full(ffi::ostree_repo_new_default())
-        }
-    }
-
-    pub fn new_for_sysroot_path<P: IsA<gio::File>, Q: IsA<gio::File>>(repo_path: &P, sysroot_path: &Q) -> Repo {
-        unsafe {
-            from_glib_full(ffi::ostree_repo_new_for_sysroot_path(repo_path.to_glib_none().0, sysroot_path.to_glib_none().0))
-        }
-    }
-
-    pub fn create_at<'a, P: Into<Option<&'a gio::Cancellable>>>(dfd: i32, path: &str, mode: RepoMode, options: &glib::Variant, cancellable: P) -> Result<Repo, Error> {
-        let cancellable = cancellable.into();
-        let cancellable = cancellable.to_glib_none();
-        unsafe {
-            let mut error = ptr::null_mut();
-            let ret = ffi::ostree_repo_create_at(dfd, path.to_glib_none().0, mode.to_glib(), options.to_glib_none().0, cancellable.0, &mut error);
-            if error.is_null() { Ok(from_glib_full(ret)) } else { Err(from_glib_full(error)) }
-        }
-    }
-
-    pub fn open_at<'a, P: Into<Option<&'a gio::Cancellable>>>(dfd: i32, path: &str, cancellable: P) -> Result<Repo, Error> {
-        let cancellable = cancellable.into();
-        let cancellable = cancellable.to_glib_none();
-        unsafe {
-            let mut error = ptr::null_mut();
-            let ret = ffi::ostree_repo_open_at(dfd, path.to_glib_none().0, cancellable.0, &mut error);
-            if error.is_null() { Ok(from_glib_full(ret)) } else { Err(from_glib_full(error)) }
-        }
-    }
-
-    //pub fn pull_default_console_progress_changed<P: Into<Option</*Unimplemented*/Fundamental: Pointer>>>(progress: &AsyncProgress, user_data: P) {
-    //    unsafe { TODO: call ffi::ostree_repo_pull_default_console_progress_changed() }
-    //}
-
-    //#[cfg(any(feature = "v2018_5", feature = "dox"))]
-    //pub fn traverse_new_parents() -> /*Unknown conversion*//*Unimplemented*/HashTable TypeId { ns_id: 2, id: 181 }/TypeId { ns_id: 2, id: 181 } {
-    //    unsafe { TODO: call ffi::ostree_repo_traverse_new_parents() }
-    //}
-
-    //pub fn traverse_new_reachable() -> /*Unknown conversion*//*Unimplemented*/HashTable TypeId { ns_id: 2, id: 181 }/TypeId { ns_id: 2, id: 181 } {
-    //    unsafe { TODO: call ffi::ostree_repo_traverse_new_reachable() }
-    //}
-
-    //#[cfg(any(feature = "v2018_5", feature = "dox"))]
-    //pub fn traverse_parents_get_commits(parents: /*Unknown conversion*//*Unimplemented*/HashTable TypeId { ns_id: 0, id: 25 }/TypeId { ns_id: 0, id: 25 }, object: &glib::Variant) -> Vec<String> {
-    //    unsafe { TODO: call ffi::ostree_repo_traverse_parents_get_commits() }
-    //}
-}
-
-pub trait RepoExt {
-    fn abort_transaction<'a, P: Into<Option<&'a gio::Cancellable>>>(&self, cancellable: P) -> Result<(), Error>;
-
-    fn add_gpg_signature_summary<'a, 'b, P: Into<Option<&'a str>>, Q: Into<Option<&'b gio::Cancellable>>>(&self, key_id: &[&str], homedir: P, cancellable: Q) -> Result<(), Error>;
-
-    fn append_gpg_signature<'a, P: Into<Option<&'a gio::Cancellable>>>(&self, commit_checksum: &str, signature_bytes: &glib::Bytes, cancellable: P) -> Result<(), Error>;
-
-    //fn checkout_at<'a, 'b, P: Into<Option<&'a /*Ignored*/RepoCheckoutAtOptions>>, Q: Into<Option<&'b gio::Cancellable>>>(&self, options: P, destination_dfd: i32, destination_path: &str, commit: &str, cancellable: Q) -> Result<(), Error>;
-
-    fn checkout_gc<'a, P: Into<Option<&'a gio::Cancellable>>>(&self, cancellable: P) -> Result<(), Error>;
-
-    fn checkout_tree<'a, P: IsA<gio::File>, Q: Into<Option<&'a gio::Cancellable>>>(&self, mode: RepoCheckoutMode, overwrite_mode: RepoCheckoutOverwriteMode, destination: &P, source: &RepoFile, source_info: &gio::FileInfo, cancellable: Q) -> Result<(), Error>;
-
-    //fn checkout_tree_at<'a, 'b, P: Into<Option<&'a /*Ignored*/RepoCheckoutOptions>>, Q: Into<Option<&'b gio::Cancellable>>>(&self, options: P, destination_dfd: i32, destination_path: &str, commit: &str, cancellable: Q) -> Result<(), Error>;
-
-    fn commit_transaction<'a, P: Into<Option<&'a gio::Cancellable>>>(&self, cancellable: P) -> Result<RepoTransactionStats, Error>;
-
-    fn copy_config(&self) -> Option<glib::KeyFile>;
-
-    fn create<'a, P: Into<Option<&'a gio::Cancellable>>>(&self, mode: RepoMode, cancellable: P) -> Result<(), Error>;
-
-    fn delete_object<'a, P: Into<Option<&'a gio::Cancellable>>>(&self, objtype: ObjectType, sha256: &str, cancellable: P) -> Result<(), Error>;
-
-    #[cfg(any(feature = "v2017_12", feature = "dox"))]
-    fn equal(&self, b: &Repo) -> bool;
-
-    //fn export_tree_to_archive<'a, P: Into<Option</*Unimplemented*/Fundamental: Pointer>>, Q: Into<Option<&'a gio::Cancellable>>>(&self, opts: /*Ignored*/&mut RepoExportArchiveOptions, root: &RepoFile, archive: P, cancellable: Q) -> Result<(), Error>;
-
-    #[cfg(any(feature = "v2017_15", feature = "dox"))]
-    fn fsck_object<'a, P: Into<Option<&'a gio::Cancellable>>>(&self, objtype: ObjectType, sha256: &str, cancellable: P) -> Result<(), Error>;
-
-    #[cfg(any(feature = "v2018_6", feature = "dox"))]
-    fn get_collection_id(&self) -> Option<String>;
-
-    fn get_config(&self) -> Option<glib::KeyFile>;
-
-    fn get_dfd(&self) -> i32;
-
-    fn get_disable_fsync(&self) -> bool;
-
-    fn get_mode(&self) -> RepoMode;
-
-    fn get_parent(&self) -> Option<Repo>;
-
-    fn get_path(&self) -> Option<gio::File>;
-
-    fn get_remote_boolean_option(&self, remote_name: &str, option_name: &str, default_value: bool) -> Result<bool, Error>;
-
-    fn get_remote_list_option(&self, remote_name: &str, option_name: &str) -> Result<Vec<String>, Error>;
-
-    fn get_remote_option<'a, P: Into<Option<&'a str>>>(&self, remote_name: &str, option_name: &str, default_value: P) -> Result<String, Error>;
-
-    fn gpg_verify_data<'a, 'b, 'c, 'd, P: Into<Option<&'a str>>, Q: IsA<gio::File> + 'b, R: Into<Option<&'b Q>>, S: IsA<gio::File> + 'c, T: Into<Option<&'c S>>, U: Into<Option<&'d gio::Cancellable>>>(&self, remote_name: P, data: &glib::Bytes, signatures: &glib::Bytes, keyringdir: R, extra_keyring: T, cancellable: U) -> Result<GpgVerifyResult, Error>;
-
-    fn has_object<'a, P: Into<Option<&'a gio::Cancellable>>>(&self, objtype: ObjectType, checksum: &str, cancellable: P) -> Result<bool, Error>;
-
-    #[cfg(any(feature = "v2017_12", feature = "dox"))]
-    fn hash(&self) -> u32;
-
-    //fn import_archive_to_mtree<'a, 'b, P: Into<Option</*Unimplemented*/Fundamental: Pointer>>, Q: Into<Option<&'a RepoCommitModifier>>, R: Into<Option<&'b gio::Cancellable>>>(&self, opts: /*Ignored*/&mut RepoImportArchiveOptions, archive: P, mtree: &MutableTree, modifier: Q, cancellable: R) -> Result<(), Error>;
-
-    fn import_object_from<'a, P: Into<Option<&'a gio::Cancellable>>>(&self, source: &Repo, objtype: ObjectType, checksum: &str, cancellable: P) -> Result<(), Error>;
-
-    fn import_object_from_with_trust<'a, P: Into<Option<&'a gio::Cancellable>>>(&self, source: &Repo, objtype: ObjectType, checksum: &str, trusted: bool, cancellable: P) -> Result<(), Error>;
-
-    fn is_system(&self) -> bool;
-
-    fn is_writable(&self) -> Result<(), Error>;
-
-    //#[cfg(any(feature = "v2018_6", feature = "dox"))]
-    //fn list_collection_refs<'a, 'b, P: Into<Option<&'a str>>, Q: Into<Option<&'b gio::Cancellable>>>(&self, match_collection_id: P, out_all_refs: /*Unknown conversion*//*Unimplemented*/HashTable TypeId { ns_id: 1, id: 0 }/TypeId { ns_id: 0, id: 28 }, flags: RepoListRefsExtFlags, cancellable: Q) -> Result<(), Error>;
-
-    //fn list_commit_objects_starting_with<'a, P: Into<Option<&'a gio::Cancellable>>>(&self, start: &str, out_commits: /*Unknown conversion*//*Unimplemented*/HashTable TypeId { ns_id: 2, id: 181 }/TypeId { ns_id: 2, id: 181 }, cancellable: P) -> Result<(), Error>;
-
-    //fn list_objects<'a, P: Into<Option<&'a gio::Cancellable>>>(&self, flags: /*Ignored*/RepoListObjectsFlags, out_objects: /*Unknown conversion*//*Unimplemented*/HashTable TypeId { ns_id: 2, id: 181 }/TypeId { ns_id: 2, id: 181 }, cancellable: P) -> Result<(), Error>;
-
-    //fn list_refs<'a, 'b, P: Into<Option<&'a str>>, Q: Into<Option<&'b gio::Cancellable>>>(&self, refspec_prefix: P, out_all_refs: /*Unknown conversion*//*Unimplemented*/HashTable TypeId { ns_id: 0, id: 28 }/TypeId { ns_id: 0, id: 28 }, cancellable: Q) -> Result<(), Error>;
-
-    //fn list_refs_ext<'a, 'b, P: Into<Option<&'a str>>, Q: Into<Option<&'b gio::Cancellable>>>(&self, refspec_prefix: P, out_all_refs: /*Unknown conversion*//*Unimplemented*/HashTable TypeId { ns_id: 0, id: 28 }/TypeId { ns_id: 0, id: 28 }, flags: RepoListRefsExtFlags, cancellable: Q) -> Result<(), Error>;
-
-    //fn list_static_delta_names<'a, P: Into<Option<&'a gio::Cancellable>>>(&self, out_deltas: /*Unknown conversion*//*Unimplemented*/PtrArray TypeId { ns_id: 0, id: 28 }, cancellable: P) -> Result<(), Error>;
-
-    #[cfg(any(feature = "v2015_7", feature = "dox"))]
-    fn load_commit(&self, checksum: &str) -> Result<(glib::Variant, RepoCommitState), Error>;
-
-    fn load_file<'a, P: Into<Option<&'a gio::Cancellable>>>(&self, checksum: &str, cancellable: P) -> Result<(Option<gio::InputStream>, Option<gio::FileInfo>, Option<glib::Variant>), Error>;
-
-    fn load_object_stream<'a, P: Into<Option<&'a gio::Cancellable>>>(&self, objtype: ObjectType, checksum: &str, cancellable: P) -> Result<(gio::InputStream, u64), Error>;
-
-    fn load_variant(&self, objtype: ObjectType, sha256: &str) -> Result<glib::Variant, Error>;
-
-    fn load_variant_if_exists(&self, objtype: ObjectType, sha256: &str) -> Result<glib::Variant, Error>;
-
-    #[cfg(any(feature = "v2017_15", feature = "dox"))]
-    fn mark_commit_partial(&self, checksum: &str, is_partial: bool) -> Result<(), Error>;
-
-    fn open<'a, P: Into<Option<&'a gio::Cancellable>>>(&self, cancellable: P) -> Result<(), Error>;
-
-    fn prepare_transaction<'a, P: Into<Option<&'a gio::Cancellable>>>(&self, cancellable: P) -> Result<bool, Error>;
-
-    fn prune<'a, P: Into<Option<&'a gio::Cancellable>>>(&self, flags: RepoPruneFlags, depth: i32, cancellable: P) -> Result<(i32, i32, u64), Error>;
-
-    //fn prune_from_reachable<'a, P: Into<Option<&'a gio::Cancellable>>>(&self, options: /*Ignored*/&mut RepoPruneOptions, cancellable: P) -> Result<(i32, i32, u64), Error>;
-
-    fn prune_static_deltas<'a, 'b, P: Into<Option<&'a str>>, Q: Into<Option<&'b gio::Cancellable>>>(&self, commit: P, cancellable: Q) -> Result<(), Error>;
-
-    fn pull<'a, 'b, P: Into<Option<&'a AsyncProgress>>, Q: Into<Option<&'b gio::Cancellable>>>(&self, remote_name: &str, refs_to_fetch: &[&str], flags: RepoPullFlags, progress: P, cancellable: Q) -> Result<(), Error>;
-
-    fn pull_one_dir<'a, 'b, P: Into<Option<&'a AsyncProgress>>, Q: Into<Option<&'b gio::Cancellable>>>(&self, remote_name: &str, dir_to_pull: &str, refs_to_fetch: &[&str], flags: RepoPullFlags, progress: P, cancellable: Q) -> Result<(), Error>;
-
-    fn pull_with_options<'a, 'b, P: Into<Option<&'a AsyncProgress>>, Q: Into<Option<&'b gio::Cancellable>>>(&self, remote_name_or_baseurl: &str, options: &glib::Variant, progress: P, cancellable: Q) -> Result<(), Error>;
-
-    fn query_object_storage_size<'a, P: Into<Option<&'a gio::Cancellable>>>(&self, objtype: ObjectType, sha256: &str, cancellable: P) -> Result<u64, Error>;
-
-    fn read_commit<'a, P: Into<Option<&'a gio::Cancellable>>>(&self, ref_: &str, cancellable: P) -> Result<(gio::File, String), Error>;
-
-    fn read_commit_detached_metadata<'a, P: Into<Option<&'a gio::Cancellable>>>(&self, checksum: &str, cancellable: P) -> Result<glib::Variant, Error>;
-
-    fn regenerate_summary<'a, 'b, P: Into<Option<&'a glib::Variant>>, Q: Into<Option<&'b gio::Cancellable>>>(&self, additional_metadata: P, cancellable: Q) -> Result<(), Error>;
-
-    fn reload_config<'a, P: Into<Option<&'a gio::Cancellable>>>(&self, cancellable: P) -> Result<(), Error>;
-
-    fn remote_add<'a, 'b, P: Into<Option<&'a glib::Variant>>, Q: Into<Option<&'b gio::Cancellable>>>(&self, name: &str, url: &str, options: P, cancellable: Q) -> Result<(), Error>;
-
-    fn remote_change<'a, 'b, 'c, P: IsA<gio::File> + 'a, Q: Into<Option<&'a P>>, R: Into<Option<&'b glib::Variant>>, S: Into<Option<&'c gio::Cancellable>>>(&self, sysroot: Q, changeop: RepoRemoteChange, name: &str, url: &str, options: R, cancellable: S) -> Result<(), Error>;
-
-    fn remote_delete<'a, P: Into<Option<&'a gio::Cancellable>>>(&self, name: &str, cancellable: P) -> Result<(), Error>;
-
-    fn remote_fetch_summary<'a, P: Into<Option<&'a gio::Cancellable>>>(&self, name: &str, cancellable: P) -> Result<(glib::Bytes, glib::Bytes), Error>;
-
-    fn remote_fetch_summary_with_options<'a, 'b, P: Into<Option<&'a glib::Variant>>, Q: Into<Option<&'b gio::Cancellable>>>(&self, name: &str, options: P, cancellable: Q) -> Result<(glib::Bytes, glib::Bytes), Error>;
-
-    fn remote_get_gpg_verify(&self, name: &str) -> Result<bool, Error>;
-
-    fn remote_get_gpg_verify_summary(&self, name: &str) -> Result<bool, Error>;
-
-    fn remote_get_url(&self, name: &str) -> Result<String, Error>;
-
-    fn remote_list(&self) -> Vec<String>;
-
-    //#[cfg(any(feature = "v2018_6", feature = "dox"))]
-    //fn remote_list_collection_refs<'a, P: Into<Option<&'a gio::Cancellable>>>(&self, remote_name: &str, out_all_refs: /*Unknown conversion*//*Unimplemented*/HashTable TypeId { ns_id: 1, id: 0 }/TypeId { ns_id: 0, id: 28 }, cancellable: P) -> Result<(), Error>;
-
-    //fn remote_list_refs<'a, P: Into<Option<&'a gio::Cancellable>>>(&self, remote_name: &str, out_all_refs: /*Unknown conversion*//*Unimplemented*/HashTable TypeId { ns_id: 0, id: 28 }/TypeId { ns_id: 0, id: 28 }, cancellable: P) -> Result<(), Error>;
-
-    #[cfg(any(feature = "v2018_6", feature = "dox"))]
-    fn resolve_collection_ref<'a, P: Into<Option<&'a gio::Cancellable>>>(&self, ref_: &CollectionRef, allow_noent: bool, flags: RepoResolveRevExtFlags, cancellable: P) -> Result<Option<String>, Error>;
-
-    #[cfg(any(feature = "v2018_6", feature = "dox"))]
-    fn resolve_keyring_for_collection<'a, P: Into<Option<&'a gio::Cancellable>>>(&self, collection_id: &str, cancellable: P) -> Result<Remote, Error>;
-
-    fn resolve_rev(&self, refspec: &str, allow_noent: bool) -> Result<String, Error>;
-
-    fn resolve_rev_ext(&self, refspec: &str, allow_noent: bool, flags: RepoResolveRevExtFlags) -> Result<String, Error>;
-
-    fn scan_hardlinks<'a, P: Into<Option<&'a gio::Cancellable>>>(&self, cancellable: P) -> Result<(), Error>;
-
-    fn set_alias_ref_immediate<'a, 'b, 'c, P: Into<Option<&'a str>>, Q: Into<Option<&'b str>>, R: Into<Option<&'c gio::Cancellable>>>(&self, remote: P, ref_: &str, target: Q, cancellable: R) -> Result<(), Error>;
-
-    fn set_cache_dir<'a, P: Into<Option<&'a gio::Cancellable>>>(&self, dfd: i32, path: &str, cancellable: P) -> Result<(), Error>;
-
-    #[cfg(any(feature = "v2018_6", feature = "dox"))]
-    fn set_collection_id<'a, P: Into<Option<&'a str>>>(&self, collection_id: P) -> Result<(), Error>;
-
-    #[cfg(any(feature = "v2018_6", feature = "dox"))]
-    fn set_collection_ref_immediate<'a, 'b, P: Into<Option<&'a str>>, Q: Into<Option<&'b gio::Cancellable>>>(&self, ref_: &CollectionRef, checksum: P, cancellable: Q) -> Result<(), Error>;
-
-    fn set_disable_fsync(&self, disable_fsync: bool);
-
-    fn set_ref_immediate<'a, 'b, 'c, P: Into<Option<&'a str>>, Q: Into<Option<&'b str>>, R: Into<Option<&'c gio::Cancellable>>>(&self, remote: P, ref_: &str, checksum: Q, cancellable: R) -> Result<(), Error>;
-
-    fn sign_commit<'a, 'b, P: Into<Option<&'a str>>, Q: Into<Option<&'b gio::Cancellable>>>(&self, commit_checksum: &str, key_id: &str, homedir: P, cancellable: Q) -> Result<(), Error>;
-
-    fn sign_delta<'a, P: Into<Option<&'a gio::Cancellable>>>(&self, from_commit: &str, to_commit: &str, key_id: &str, homedir: &str, cancellable: P) -> Result<(), Error>;
-
-    fn static_delta_execute_offline<'a, P: IsA<gio::File>, Q: Into<Option<&'a gio::Cancellable>>>(&self, dir_or_file: &P, skip_validation: bool, cancellable: Q) -> Result<(), Error>;
-
-    fn static_delta_generate<'a, 'b, 'c, P: Into<Option<&'a glib::Variant>>, Q: Into<Option<&'b glib::Variant>>, R: Into<Option<&'c gio::Cancellable>>>(&self, opt: StaticDeltaGenerateOpt, from: &str, to: &str, metadata: P, params: Q, cancellable: R) -> Result<(), Error>;
-
-    #[cfg(any(feature = "v2018_6", feature = "dox"))]
-    fn transaction_set_collection_ref<'a, P: Into<Option<&'a str>>>(&self, ref_: &CollectionRef, checksum: P);
-
-    fn transaction_set_ref<'a, 'b, P: Into<Option<&'a str>>, Q: Into<Option<&'b str>>>(&self, remote: P, ref_: &str, checksum: Q);
-
-    fn transaction_set_refspec<'a, P: Into<Option<&'a str>>>(&self, refspec: &str, checksum: P);
-
-    //fn traverse_commit<'a, P: Into<Option<&'a gio::Cancellable>>>(&self, commit_checksum: &str, maxdepth: i32, out_reachable: /*Unknown conversion*//*Unimplemented*/HashTable TypeId { ns_id: 2, id: 181 }/TypeId { ns_id: 2, id: 181 }, cancellable: P) -> Result<(), Error>;
-
-    //fn traverse_commit_union<'a, P: Into<Option<&'a gio::Cancellable>>>(&self, commit_checksum: &str, maxdepth: i32, inout_reachable: /*Unknown conversion*//*Unimplemented*/HashTable TypeId { ns_id: 0, id: 25 }/TypeId { ns_id: 0, id: 25 }, cancellable: P) -> Result<(), Error>;
-
-    //#[cfg(any(feature = "v2018_5", feature = "dox"))]
-    //fn traverse_commit_union_with_parents<'a, P: Into<Option<&'a gio::Cancellable>>>(&self, commit_checksum: &str, maxdepth: i32, inout_reachable: /*Unknown conversion*//*Unimplemented*/HashTable TypeId { ns_id: 0, id: 25 }/TypeId { ns_id: 0, id: 25 }, inout_parents: /*Unknown conversion*//*Unimplemented*/HashTable TypeId { ns_id: 0, id: 25 }/TypeId { ns_id: 0, id: 25 }, cancellable: P) -> Result<(), Error>;
-
-    //#[cfg(any(feature = "v2018_6", feature = "dox"))]
-    //fn traverse_reachable_refs<'a, P: Into<Option<&'a gio::Cancellable>>>(&self, depth: u32, reachable: /*Unknown conversion*//*Unimplemented*/HashTable TypeId { ns_id: 2, id: 181 }/TypeId { ns_id: 2, id: 181 }, cancellable: P) -> Result<(), Error>;
-
-    fn verify_commit<'a, 'b, 'c, P: IsA<gio::File> + 'a, Q: Into<Option<&'a P>>, R: IsA<gio::File> + 'b, S: Into<Option<&'b R>>, T: Into<Option<&'c gio::Cancellable>>>(&self, commit_checksum: &str, keyringdir: Q, extra_keyring: S, cancellable: T) -> Result<(), Error>;
-
-    fn verify_commit_ext<'a, 'b, 'c, P: IsA<gio::File> + 'a, Q: Into<Option<&'a P>>, R: IsA<gio::File> + 'b, S: Into<Option<&'b R>>, T: Into<Option<&'c gio::Cancellable>>>(&self, commit_checksum: &str, keyringdir: Q, extra_keyring: S, cancellable: T) -> Result<GpgVerifyResult, Error>;
-
-    fn verify_commit_for_remote<'a, P: Into<Option<&'a gio::Cancellable>>>(&self, commit_checksum: &str, remote_name: &str, cancellable: P) -> Result<GpgVerifyResult, Error>;
-
-    fn verify_summary<'a, P: Into<Option<&'a gio::Cancellable>>>(&self, remote_name: &str, summary: &glib::Bytes, signatures: &glib::Bytes, cancellable: P) -> Result<GpgVerifyResult, Error>;
-
-    fn write_archive_to_mtree<'a, 'b, P: IsA<gio::File>, Q: Into<Option<&'a RepoCommitModifier>>, R: Into<Option<&'b gio::Cancellable>>>(&self, archive: &P, mtree: &MutableTree, modifier: Q, autocreate_parents: bool, cancellable: R) -> Result<(), Error>;
-
-    fn write_commit<'a, 'b, 'c, 'd, 'e, P: Into<Option<&'a str>>, Q: Into<Option<&'b str>>, R: Into<Option<&'c str>>, S: Into<Option<&'d glib::Variant>>, T: Into<Option<&'e gio::Cancellable>>>(&self, parent: P, subject: Q, body: R, metadata: S, root: &RepoFile, cancellable: T) -> Result<String, Error>;
-
-    fn write_commit_detached_metadata<'a, 'b, P: Into<Option<&'a glib::Variant>>, Q: Into<Option<&'b gio::Cancellable>>>(&self, checksum: &str, metadata: P, cancellable: Q) -> Result<(), Error>;
-
-    fn write_commit_with_time<'a, 'b, 'c, 'd, 'e, P: Into<Option<&'a str>>, Q: Into<Option<&'b str>>, R: Into<Option<&'c str>>, S: Into<Option<&'d glib::Variant>>, T: Into<Option<&'e gio::Cancellable>>>(&self, parent: P, subject: Q, body: R, metadata: S, root: &RepoFile, time: u64, cancellable: T) -> Result<String, Error>;
-
-    fn write_config(&self, new_config: &glib::KeyFile) -> Result<(), Error>;
-
-    //fn write_content<'a, 'b, P: Into<Option<&'a str>>, Q: IsA<gio::InputStream>, R: Into<Option<&'b gio::Cancellable>>>(&self, expected_checksum: P, object_input: &Q, length: u64, out_csum: /*Unknown conversion*//*Unimplemented*/FixedArray TypeId { ns_id: 0, id: 3 }; 32, cancellable: R) -> Result<(), Error>;
-
-    fn write_content_trusted<'a, P: IsA<gio::InputStream>, Q: Into<Option<&'a gio::Cancellable>>>(&self, checksum: &str, object_input: &P, length: u64, cancellable: Q) -> Result<(), Error>;
-
-    fn write_dfd_to_mtree<'a, 'b, P: Into<Option<&'a RepoCommitModifier>>, Q: Into<Option<&'b gio::Cancellable>>>(&self, dfd: i32, path: &str, mtree: &MutableTree, modifier: P, cancellable: Q) -> Result<(), Error>;
-
-    fn write_directory_to_mtree<'a, 'b, P: IsA<gio::File>, Q: Into<Option<&'a RepoCommitModifier>>, R: Into<Option<&'b gio::Cancellable>>>(&self, dir: &P, mtree: &MutableTree, modifier: Q, cancellable: R) -> Result<(), Error>;
-
-    //fn write_metadata<'a, 'b, P: Into<Option<&'a str>>, Q: Into<Option<&'b gio::Cancellable>>>(&self, objtype: ObjectType, expected_checksum: P, object: &glib::Variant, out_csum: /*Unknown conversion*//*Unimplemented*/FixedArray TypeId { ns_id: 0, id: 3 }; 32, cancellable: Q) -> Result<(), Error>;
-
-    fn write_metadata_stream_trusted<'a, P: IsA<gio::InputStream>, Q: Into<Option<&'a gio::Cancellable>>>(&self, objtype: ObjectType, checksum: &str, object_input: &P, length: u64, cancellable: Q) -> Result<(), Error>;
-
-    fn write_metadata_trusted<'a, P: Into<Option<&'a gio::Cancellable>>>(&self, objtype: ObjectType, checksum: &str, variant: &glib::Variant, cancellable: P) -> Result<(), Error>;
-
-    fn write_mtree<'a, P: Into<Option<&'a gio::Cancellable>>>(&self, mtree: &MutableTree, cancellable: P) -> Result<gio::File, Error>;
-
-    fn get_property_remotes_config_dir(&self) -> Option<String>;
-
-    fn get_property_sysroot_path(&self) -> Option<gio::File>;
-
-    fn connect_gpg_verify_result<F: Fn(&Self, &str, &GpgVerifyResult) + 'static>(&self, f: F) -> SignalHandlerId;
-}
-
-impl<O: IsA<Repo> + IsA<glib::object::Object>> RepoExt for O {
-    fn abort_transaction<'a, P: Into<Option<&'a gio::Cancellable>>>(&self, cancellable: P) -> Result<(), Error> {
-        let cancellable = cancellable.into();
-        let cancellable = cancellable.to_glib_none();
-        unsafe {
-            let mut error = ptr::null_mut();
-            let _ = ffi::ostree_repo_abort_transaction(self.to_glib_none().0, cancellable.0, &mut error);
-            if error.is_null() { Ok(()) } else { Err(from_glib_full(error)) }
-        }
-    }
-
-    fn add_gpg_signature_summary<'a, 'b, P: Into<Option<&'a str>>, Q: Into<Option<&'b gio::Cancellable>>>(&self, key_id: &[&str], homedir: P, cancellable: Q) -> Result<(), Error> {
-        let homedir = homedir.into();
-        let homedir = homedir.to_glib_none();
-        let cancellable = cancellable.into();
-        let cancellable = cancellable.to_glib_none();
-        unsafe {
-            let mut error = ptr::null_mut();
-            let _ = ffi::ostree_repo_add_gpg_signature_summary(self.to_glib_none().0, key_id.to_glib_none().0, homedir.0, cancellable.0, &mut error);
-            if error.is_null() { Ok(()) } else { Err(from_glib_full(error)) }
-        }
-    }
-
-    fn append_gpg_signature<'a, P: Into<Option<&'a gio::Cancellable>>>(&self, commit_checksum: &str, signature_bytes: &glib::Bytes, cancellable: P) -> Result<(), Error> {
-        let cancellable = cancellable.into();
-        let cancellable = cancellable.to_glib_none();
-        unsafe {
-            let mut error = ptr::null_mut();
-            let _ = ffi::ostree_repo_append_gpg_signature(self.to_glib_none().0, commit_checksum.to_glib_none().0, signature_bytes.to_glib_none().0, cancellable.0, &mut error);
-            if error.is_null() { Ok(()) } else { Err(from_glib_full(error)) }
-        }
-    }
-
-    //fn checkout_at<'a, 'b, P: Into<Option<&'a /*Ignored*/RepoCheckoutAtOptions>>, Q: Into<Option<&'b gio::Cancellable>>>(&self, options: P, destination_dfd: i32, destination_path: &str, commit: &str, cancellable: Q) -> Result<(), Error> {
-    //    unsafe { TODO: call ffi::ostree_repo_checkout_at() }
-    //}
-
-    fn checkout_gc<'a, P: Into<Option<&'a gio::Cancellable>>>(&self, cancellable: P) -> Result<(), Error> {
-        let cancellable = cancellable.into();
-        let cancellable = cancellable.to_glib_none();
-        unsafe {
-            let mut error = ptr::null_mut();
-            let _ = ffi::ostree_repo_checkout_gc(self.to_glib_none().0, cancellable.0, &mut error);
-            if error.is_null() { Ok(()) } else { Err(from_glib_full(error)) }
-        }
-    }
-
-    fn checkout_tree<'a, P: IsA<gio::File>, Q: Into<Option<&'a gio::Cancellable>>>(&self, mode: RepoCheckoutMode, overwrite_mode: RepoCheckoutOverwriteMode, destination: &P, source: &RepoFile, source_info: &gio::FileInfo, cancellable: Q) -> Result<(), Error> {
-        let cancellable = cancellable.into();
-        let cancellable = cancellable.to_glib_none();
-        unsafe {
-            let mut error = ptr::null_mut();
-            let _ = ffi::ostree_repo_checkout_tree(self.to_glib_none().0, mode.to_glib(), overwrite_mode.to_glib(), destination.to_glib_none().0, source.to_glib_none().0, source_info.to_glib_none().0, cancellable.0, &mut error);
-            if error.is_null() { Ok(()) } else { Err(from_glib_full(error)) }
-        }
-    }
-
-    //fn checkout_tree_at<'a, 'b, P: Into<Option<&'a /*Ignored*/RepoCheckoutOptions>>, Q: Into<Option<&'b gio::Cancellable>>>(&self, options: P, destination_dfd: i32, destination_path: &str, commit: &str, cancellable: Q) -> Result<(), Error> {
-    //    unsafe { TODO: call ffi::ostree_repo_checkout_tree_at() }
-    //}
-
-    fn commit_transaction<'a, P: Into<Option<&'a gio::Cancellable>>>(&self, cancellable: P) -> Result<RepoTransactionStats, Error> {
-        let cancellable = cancellable.into();
-        let cancellable = cancellable.to_glib_none();
-        unsafe {
-            let mut out_stats = RepoTransactionStats::uninitialized();
-            let mut error = ptr::null_mut();
-            let _ = ffi::ostree_repo_commit_transaction(self.to_glib_none().0, out_stats.to_glib_none_mut().0, cancellable.0, &mut error);
-            if error.is_null() { Ok(out_stats) } else { Err(from_glib_full(error)) }
-        }
-    }
-
-    fn copy_config(&self) -> Option<glib::KeyFile> {
-        unsafe {
-            from_glib_full(ffi::ostree_repo_copy_config(self.to_glib_none().0))
-        }
-    }
-
-    fn create<'a, P: Into<Option<&'a gio::Cancellable>>>(&self, mode: RepoMode, cancellable: P) -> Result<(), Error> {
-        let cancellable = cancellable.into();
-        let cancellable = cancellable.to_glib_none();
-        unsafe {
-            let mut error = ptr::null_mut();
-            let _ = ffi::ostree_repo_create(self.to_glib_none().0, mode.to_glib(), cancellable.0, &mut error);
-            if error.is_null() { Ok(()) } else { Err(from_glib_full(error)) }
-        }
-    }
-
-    fn delete_object<'a, P: Into<Option<&'a gio::Cancellable>>>(&self, objtype: ObjectType, sha256: &str, cancellable: P) -> Result<(), Error> {
-        let cancellable = cancellable.into();
-        let cancellable = cancellable.to_glib_none();
-        unsafe {
-            let mut error = ptr::null_mut();
-            let _ = ffi::ostree_repo_delete_object(self.to_glib_none().0, objtype.to_glib(), sha256.to_glib_none().0, cancellable.0, &mut error);
-            if error.is_null() { Ok(()) } else { Err(from_glib_full(error)) }
-        }
-    }
-
-    #[cfg(any(feature = "v2017_12", feature = "dox"))]
-    fn equal(&self, b: &Repo) -> bool {
-        unsafe {
-            from_glib(ffi::ostree_repo_equal(self.to_glib_none().0, b.to_glib_none().0))
-        }
-    }
-
-    //fn export_tree_to_archive<'a, P: Into<Option</*Unimplemented*/Fundamental: Pointer>>, Q: Into<Option<&'a gio::Cancellable>>>(&self, opts: /*Ignored*/&mut RepoExportArchiveOptions, root: &RepoFile, archive: P, cancellable: Q) -> Result<(), Error> {
-    //    unsafe { TODO: call ffi::ostree_repo_export_tree_to_archive() }
-    //}
-
-    #[cfg(any(feature = "v2017_15", feature = "dox"))]
-    fn fsck_object<'a, P: Into<Option<&'a gio::Cancellable>>>(&self, objtype: ObjectType, sha256: &str, cancellable: P) -> Result<(), Error> {
-        let cancellable = cancellable.into();
-        let cancellable = cancellable.to_glib_none();
-        unsafe {
-            let mut error = ptr::null_mut();
-            let _ = ffi::ostree_repo_fsck_object(self.to_glib_none().0, objtype.to_glib(), sha256.to_glib_none().0, cancellable.0, &mut error);
-            if error.is_null() { Ok(()) } else { Err(from_glib_full(error)) }
-        }
-    }
-
-    #[cfg(any(feature = "v2018_6", feature = "dox"))]
-    fn get_collection_id(&self) -> Option<String> {
-        unsafe {
-            from_glib_none(ffi::ostree_repo_get_collection_id(self.to_glib_none().0))
-        }
-    }
-
-    fn get_config(&self) -> Option<glib::KeyFile> {
-        unsafe {
-            from_glib_none(ffi::ostree_repo_get_config(self.to_glib_none().0))
-        }
-    }
-
-    fn get_dfd(&self) -> i32 {
-        unsafe {
-            ffi::ostree_repo_get_dfd(self.to_glib_none().0)
-        }
-    }
-
-    fn get_disable_fsync(&self) -> bool {
-        unsafe {
-            from_glib(ffi::ostree_repo_get_disable_fsync(self.to_glib_none().0))
-        }
-    }
-
-    fn get_mode(&self) -> RepoMode {
-        unsafe {
-            from_glib(ffi::ostree_repo_get_mode(self.to_glib_none().0))
-        }
-    }
-
-    fn get_parent(&self) -> Option<Repo> {
-        unsafe {
-            from_glib_none(ffi::ostree_repo_get_parent(self.to_glib_none().0))
-        }
-    }
-
-    fn get_path(&self) -> Option<gio::File> {
-        unsafe {
-            from_glib_none(ffi::ostree_repo_get_path(self.to_glib_none().0))
-        }
-    }
-
-    fn get_remote_boolean_option(&self, remote_name: &str, option_name: &str, default_value: bool) -> Result<bool, Error> {
-        unsafe {
-            let mut out_value = mem::uninitialized();
-            let mut error = ptr::null_mut();
-            let _ = ffi::ostree_repo_get_remote_boolean_option(self.to_glib_none().0, remote_name.to_glib_none().0, option_name.to_glib_none().0, default_value.to_glib(), &mut out_value, &mut error);
-            if error.is_null() { Ok(from_glib(out_value)) } else { Err(from_glib_full(error)) }
-        }
-    }
-
-    fn get_remote_list_option(&self, remote_name: &str, option_name: &str) -> Result<Vec<String>, Error> {
-        unsafe {
-            let mut out_value = ptr::null_mut();
-            let mut error = ptr::null_mut();
-            let _ = ffi::ostree_repo_get_remote_list_option(self.to_glib_none().0, remote_name.to_glib_none().0, option_name.to_glib_none().0, &mut out_value, &mut error);
-            if error.is_null() { Ok(FromGlibPtrContainer::from_glib_full(out_value)) } else { Err(from_glib_full(error)) }
-        }
-    }
-
-    fn get_remote_option<'a, P: Into<Option<&'a str>>>(&self, remote_name: &str, option_name: &str, default_value: P) -> Result<String, Error> {
-        let default_value = default_value.into();
-        let default_value = default_value.to_glib_none();
-        unsafe {
-            let mut out_value = ptr::null_mut();
-            let mut error = ptr::null_mut();
-            let _ = ffi::ostree_repo_get_remote_option(self.to_glib_none().0, remote_name.to_glib_none().0, option_name.to_glib_none().0, default_value.0, &mut out_value, &mut error);
-            if error.is_null() { Ok(from_glib_full(out_value)) } else { Err(from_glib_full(error)) }
-        }
-    }
-
-    fn gpg_verify_data<'a, 'b, 'c, 'd, P: Into<Option<&'a str>>, Q: IsA<gio::File> + 'b, R: Into<Option<&'b Q>>, S: IsA<gio::File> + 'c, T: Into<Option<&'c S>>, U: Into<Option<&'d gio::Cancellable>>>(&self, remote_name: P, data: &glib::Bytes, signatures: &glib::Bytes, keyringdir: R, extra_keyring: T, cancellable: U) -> Result<GpgVerifyResult, Error> {
-        let remote_name = remote_name.into();
-        let remote_name = remote_name.to_glib_none();
-        let keyringdir = keyringdir.into();
-        let keyringdir = keyringdir.to_glib_none();
-        let extra_keyring = extra_keyring.into();
-        let extra_keyring = extra_keyring.to_glib_none();
-        let cancellable = cancellable.into();
-        let cancellable = cancellable.to_glib_none();
-        unsafe {
-            let mut error = ptr::null_mut();
-            let ret = ffi::ostree_repo_gpg_verify_data(self.to_glib_none().0, remote_name.0, data.to_glib_none().0, signatures.to_glib_none().0, keyringdir.0, extra_keyring.0, cancellable.0, &mut error);
-            if error.is_null() { Ok(from_glib_full(ret)) } else { Err(from_glib_full(error)) }
-        }
-    }
-
-    fn has_object<'a, P: Into<Option<&'a gio::Cancellable>>>(&self, objtype: ObjectType, checksum: &str, cancellable: P) -> Result<bool, Error> {
-        let cancellable = cancellable.into();
-        let cancellable = cancellable.to_glib_none();
-        unsafe {
-            let mut out_have_object = mem::uninitialized();
-            let mut error = ptr::null_mut();
-            let _ = ffi::ostree_repo_has_object(self.to_glib_none().0, objtype.to_glib(), checksum.to_glib_none().0, &mut out_have_object, cancellable.0, &mut error);
-            if error.is_null() { Ok(from_glib(out_have_object)) } else { Err(from_glib_full(error)) }
-        }
-    }
-
-    #[cfg(any(feature = "v2017_12", feature = "dox"))]
-    fn hash(&self) -> u32 {
-        unsafe {
-            ffi::ostree_repo_hash(self.to_glib_none().0)
-        }
-    }
-
-    //fn import_archive_to_mtree<'a, 'b, P: Into<Option</*Unimplemented*/Fundamental: Pointer>>, Q: Into<Option<&'a RepoCommitModifier>>, R: Into<Option<&'b gio::Cancellable>>>(&self, opts: /*Ignored*/&mut RepoImportArchiveOptions, archive: P, mtree: &MutableTree, modifier: Q, cancellable: R) -> Result<(), Error> {
-    //    unsafe { TODO: call ffi::ostree_repo_import_archive_to_mtree() }
-    //}
-
-    fn import_object_from<'a, P: Into<Option<&'a gio::Cancellable>>>(&self, source: &Repo, objtype: ObjectType, checksum: &str, cancellable: P) -> Result<(), Error> {
-        let cancellable = cancellable.into();
-        let cancellable = cancellable.to_glib_none();
-        unsafe {
-            let mut error = ptr::null_mut();
-            let _ = ffi::ostree_repo_import_object_from(self.to_glib_none().0, source.to_glib_none().0, objtype.to_glib(), checksum.to_glib_none().0, cancellable.0, &mut error);
-            if error.is_null() { Ok(()) } else { Err(from_glib_full(error)) }
-        }
-    }
-
-    fn import_object_from_with_trust<'a, P: Into<Option<&'a gio::Cancellable>>>(&self, source: &Repo, objtype: ObjectType, checksum: &str, trusted: bool, cancellable: P) -> Result<(), Error> {
-        let cancellable = cancellable.into();
-        let cancellable = cancellable.to_glib_none();
-        unsafe {
-            let mut error = ptr::null_mut();
-            let _ = ffi::ostree_repo_import_object_from_with_trust(self.to_glib_none().0, source.to_glib_none().0, objtype.to_glib(), checksum.to_glib_none().0, trusted.to_glib(), cancellable.0, &mut error);
-            if error.is_null() { Ok(()) } else { Err(from_glib_full(error)) }
-        }
-    }
-
-    fn is_system(&self) -> bool {
-        unsafe {
-            from_glib(ffi::ostree_repo_is_system(self.to_glib_none().0))
-        }
-    }
-
-    fn is_writable(&self) -> Result<(), Error> {
-        unsafe {
-            let mut error = ptr::null_mut();
-            let _ = ffi::ostree_repo_is_writable(self.to_glib_none().0, &mut error);
-            if error.is_null() { Ok(()) } else { Err(from_glib_full(error)) }
-        }
-    }
-
-    //#[cfg(any(feature = "v2018_6", feature = "dox"))]
-    //fn list_collection_refs<'a, 'b, P: Into<Option<&'a str>>, Q: Into<Option<&'b gio::Cancellable>>>(&self, match_collection_id: P, out_all_refs: /*Unknown conversion*//*Unimplemented*/HashTable TypeId { ns_id: 1, id: 0 }/TypeId { ns_id: 0, id: 28 }, flags: RepoListRefsExtFlags, cancellable: Q) -> Result<(), Error> {
-    //    unsafe { TODO: call ffi::ostree_repo_list_collection_refs() }
-    //}
-
-    //fn list_commit_objects_starting_with<'a, P: Into<Option<&'a gio::Cancellable>>>(&self, start: &str, out_commits: /*Unknown conversion*//*Unimplemented*/HashTable TypeId { ns_id: 2, id: 181 }/TypeId { ns_id: 2, id: 181 }, cancellable: P) -> Result<(), Error> {
-    //    unsafe { TODO: call ffi::ostree_repo_list_commit_objects_starting_with() }
-    //}
-
-    //fn list_objects<'a, P: Into<Option<&'a gio::Cancellable>>>(&self, flags: /*Ignored*/RepoListObjectsFlags, out_objects: /*Unknown conversion*//*Unimplemented*/HashTable TypeId { ns_id: 2, id: 181 }/TypeId { ns_id: 2, id: 181 }, cancellable: P) -> Result<(), Error> {
-    //    unsafe { TODO: call ffi::ostree_repo_list_objects() }
-    //}
-
-    //fn list_refs<'a, 'b, P: Into<Option<&'a str>>, Q: Into<Option<&'b gio::Cancellable>>>(&self, refspec_prefix: P, out_all_refs: /*Unknown conversion*//*Unimplemented*/HashTable TypeId { ns_id: 0, id: 28 }/TypeId { ns_id: 0, id: 28 }, cancellable: Q) -> Result<(), Error> {
-    //    unsafe { TODO: call ffi::ostree_repo_list_refs() }
-    //}
-
-    //fn list_refs_ext<'a, 'b, P: Into<Option<&'a str>>, Q: Into<Option<&'b gio::Cancellable>>>(&self, refspec_prefix: P, out_all_refs: /*Unknown conversion*//*Unimplemented*/HashTable TypeId { ns_id: 0, id: 28 }/TypeId { ns_id: 0, id: 28 }, flags: RepoListRefsExtFlags, cancellable: Q) -> Result<(), Error> {
-    //    unsafe { TODO: call ffi::ostree_repo_list_refs_ext() }
-    //}
-
-    //fn list_static_delta_names<'a, P: Into<Option<&'a gio::Cancellable>>>(&self, out_deltas: /*Unknown conversion*//*Unimplemented*/PtrArray TypeId { ns_id: 0, id: 28 }, cancellable: P) -> Result<(), Error> {
-    //    unsafe { TODO: call ffi::ostree_repo_list_static_delta_names() }
-    //}
-
-    #[cfg(any(feature = "v2015_7", feature = "dox"))]
-    fn load_commit(&self, checksum: &str) -> Result<(glib::Variant, RepoCommitState), Error> {
-        unsafe {
-            let mut out_commit = ptr::null_mut();
-            let mut out_state = mem::uninitialized();
-            let mut error = ptr::null_mut();
-            let _ = ffi::ostree_repo_load_commit(self.to_glib_none().0, checksum.to_glib_none().0, &mut out_commit, &mut out_state, &mut error);
-            if error.is_null() { Ok((from_glib_full(out_commit), from_glib(out_state))) } else { Err(from_glib_full(error)) }
-        }
-    }
-
-    fn load_file<'a, P: Into<Option<&'a gio::Cancellable>>>(&self, checksum: &str, cancellable: P) -> Result<(Option<gio::InputStream>, Option<gio::FileInfo>, Option<glib::Variant>), Error> {
-        let cancellable = cancellable.into();
-        let cancellable = cancellable.to_glib_none();
-        unsafe {
-            let mut out_input = ptr::null_mut();
-            let mut out_file_info = ptr::null_mut();
-            let mut out_xattrs = ptr::null_mut();
-            let mut error = ptr::null_mut();
-            let _ = ffi::ostree_repo_load_file(self.to_glib_none().0, checksum.to_glib_none().0, &mut out_input, &mut out_file_info, &mut out_xattrs, cancellable.0, &mut error);
-            if error.is_null() { Ok((from_glib_full(out_input), from_glib_full(out_file_info), from_glib_full(out_xattrs))) } else { Err(from_glib_full(error)) }
-        }
-    }
-
-    fn load_object_stream<'a, P: Into<Option<&'a gio::Cancellable>>>(&self, objtype: ObjectType, checksum: &str, cancellable: P) -> Result<(gio::InputStream, u64), Error> {
-        let cancellable = cancellable.into();
-        let cancellable = cancellable.to_glib_none();
-        unsafe {
-            let mut out_input = ptr::null_mut();
-            let mut out_size = mem::uninitialized();
-            let mut error = ptr::null_mut();
-            let _ = ffi::ostree_repo_load_object_stream(self.to_glib_none().0, objtype.to_glib(), checksum.to_glib_none().0, &mut out_input, &mut out_size, cancellable.0, &mut error);
-            if error.is_null() { Ok((from_glib_full(out_input), out_size)) } else { Err(from_glib_full(error)) }
-        }
-    }
-
-    fn load_variant(&self, objtype: ObjectType, sha256: &str) -> Result<glib::Variant, Error> {
-        unsafe {
-            let mut out_variant = ptr::null_mut();
-            let mut error = ptr::null_mut();
-            let _ = ffi::ostree_repo_load_variant(self.to_glib_none().0, objtype.to_glib(), sha256.to_glib_none().0, &mut out_variant, &mut error);
-            if error.is_null() { Ok(from_glib_full(out_variant)) } else { Err(from_glib_full(error)) }
-        }
-    }
-
-    fn load_variant_if_exists(&self, objtype: ObjectType, sha256: &str) -> Result<glib::Variant, Error> {
-        unsafe {
-            let mut out_variant = ptr::null_mut();
-            let mut error = ptr::null_mut();
-            let _ = ffi::ostree_repo_load_variant_if_exists(self.to_glib_none().0, objtype.to_glib(), sha256.to_glib_none().0, &mut out_variant, &mut error);
-            if error.is_null() { Ok(from_glib_full(out_variant)) } else { Err(from_glib_full(error)) }
-        }
-    }
-
-    #[cfg(any(feature = "v2017_15", feature = "dox"))]
-    fn mark_commit_partial(&self, checksum: &str, is_partial: bool) -> Result<(), Error> {
-        unsafe {
-            let mut error = ptr::null_mut();
-            let _ = ffi::ostree_repo_mark_commit_partial(self.to_glib_none().0, checksum.to_glib_none().0, is_partial.to_glib(), &mut error);
-            if error.is_null() { Ok(()) } else { Err(from_glib_full(error)) }
-        }
-    }
-
-    fn open<'a, P: Into<Option<&'a gio::Cancellable>>>(&self, cancellable: P) -> Result<(), Error> {
-        let cancellable = cancellable.into();
-        let cancellable = cancellable.to_glib_none();
-        unsafe {
-            let mut error = ptr::null_mut();
-            let _ = ffi::ostree_repo_open(self.to_glib_none().0, cancellable.0, &mut error);
-            if error.is_null() { Ok(()) } else { Err(from_glib_full(error)) }
-        }
-    }
-
-    fn prepare_transaction<'a, P: Into<Option<&'a gio::Cancellable>>>(&self, cancellable: P) -> Result<bool, Error> {
-        let cancellable = cancellable.into();
-        let cancellable = cancellable.to_glib_none();
-        unsafe {
-            let mut out_transaction_resume = mem::uninitialized();
-            let mut error = ptr::null_mut();
-            let _ = ffi::ostree_repo_prepare_transaction(self.to_glib_none().0, &mut out_transaction_resume, cancellable.0, &mut error);
-            if error.is_null() { Ok(from_glib(out_transaction_resume)) } else { Err(from_glib_full(error)) }
-        }
-    }
-
-    fn prune<'a, P: Into<Option<&'a gio::Cancellable>>>(&self, flags: RepoPruneFlags, depth: i32, cancellable: P) -> Result<(i32, i32, u64), Error> {
-        let cancellable = cancellable.into();
-        let cancellable = cancellable.to_glib_none();
-        unsafe {
-            let mut out_objects_total = mem::uninitialized();
-            let mut out_objects_pruned = mem::uninitialized();
-            let mut out_pruned_object_size_total = mem::uninitialized();
-            let mut error = ptr::null_mut();
-            let _ = ffi::ostree_repo_prune(self.to_glib_none().0, flags.to_glib(), depth, &mut out_objects_total, &mut out_objects_pruned, &mut out_pruned_object_size_total, cancellable.0, &mut error);
-            if error.is_null() { Ok((out_objects_total, out_objects_pruned, out_pruned_object_size_total)) } else { Err(from_glib_full(error)) }
-        }
-    }
-
-    //fn prune_from_reachable<'a, P: Into<Option<&'a gio::Cancellable>>>(&self, options: /*Ignored*/&mut RepoPruneOptions, cancellable: P) -> Result<(i32, i32, u64), Error> {
-    //    unsafe { TODO: call ffi::ostree_repo_prune_from_reachable() }
-    //}
-
-    fn prune_static_deltas<'a, 'b, P: Into<Option<&'a str>>, Q: Into<Option<&'b gio::Cancellable>>>(&self, commit: P, cancellable: Q) -> Result<(), Error> {
-        let commit = commit.into();
-        let commit = commit.to_glib_none();
-        let cancellable = cancellable.into();
-        let cancellable = cancellable.to_glib_none();
-        unsafe {
-            let mut error = ptr::null_mut();
-            let _ = ffi::ostree_repo_prune_static_deltas(self.to_glib_none().0, commit.0, cancellable.0, &mut error);
-            if error.is_null() { Ok(()) } else { Err(from_glib_full(error)) }
-        }
-    }
-
-    fn pull<'a, 'b, P: Into<Option<&'a AsyncProgress>>, Q: Into<Option<&'b gio::Cancellable>>>(&self, remote_name: &str, refs_to_fetch: &[&str], flags: RepoPullFlags, progress: P, cancellable: Q) -> Result<(), Error> {
-        let progress = progress.into();
-        let progress = progress.to_glib_none();
-        let cancellable = cancellable.into();
-        let cancellable = cancellable.to_glib_none();
-        unsafe {
-            let mut error = ptr::null_mut();
-            let _ = ffi::ostree_repo_pull(self.to_glib_none().0, remote_name.to_glib_none().0, refs_to_fetch.to_glib_none().0, flags.to_glib(), progress.0, cancellable.0, &mut error);
-            if error.is_null() { Ok(()) } else { Err(from_glib_full(error)) }
-        }
-    }
-
-    fn pull_one_dir<'a, 'b, P: Into<Option<&'a AsyncProgress>>, Q: Into<Option<&'b gio::Cancellable>>>(&self, remote_name: &str, dir_to_pull: &str, refs_to_fetch: &[&str], flags: RepoPullFlags, progress: P, cancellable: Q) -> Result<(), Error> {
-        let progress = progress.into();
-        let progress = progress.to_glib_none();
-        let cancellable = cancellable.into();
-        let cancellable = cancellable.to_glib_none();
-        unsafe {
-            let mut error = ptr::null_mut();
-            let _ = ffi::ostree_repo_pull_one_dir(self.to_glib_none().0, remote_name.to_glib_none().0, dir_to_pull.to_glib_none().0, refs_to_fetch.to_glib_none().0, flags.to_glib(), progress.0, cancellable.0, &mut error);
-            if error.is_null() { Ok(()) } else { Err(from_glib_full(error)) }
-        }
-    }
-
-    fn pull_with_options<'a, 'b, P: Into<Option<&'a AsyncProgress>>, Q: Into<Option<&'b gio::Cancellable>>>(&self, remote_name_or_baseurl: &str, options: &glib::Variant, progress: P, cancellable: Q) -> Result<(), Error> {
-        let progress = progress.into();
-        let progress = progress.to_glib_none();
-        let cancellable = cancellable.into();
-        let cancellable = cancellable.to_glib_none();
-        unsafe {
-            let mut error = ptr::null_mut();
-            let _ = ffi::ostree_repo_pull_with_options(self.to_glib_none().0, remote_name_or_baseurl.to_glib_none().0, options.to_glib_none().0, progress.0, cancellable.0, &mut error);
-            if error.is_null() { Ok(()) } else { Err(from_glib_full(error)) }
-        }
-    }
-
-    fn query_object_storage_size<'a, P: Into<Option<&'a gio::Cancellable>>>(&self, objtype: ObjectType, sha256: &str, cancellable: P) -> Result<u64, Error> {
-        let cancellable = cancellable.into();
-        let cancellable = cancellable.to_glib_none();
-        unsafe {
-            let mut out_size = mem::uninitialized();
-            let mut error = ptr::null_mut();
-            let _ = ffi::ostree_repo_query_object_storage_size(self.to_glib_none().0, objtype.to_glib(), sha256.to_glib_none().0, &mut out_size, cancellable.0, &mut error);
-            if error.is_null() { Ok(out_size) } else { Err(from_glib_full(error)) }
-        }
-    }
-
-    fn read_commit<'a, P: Into<Option<&'a gio::Cancellable>>>(&self, ref_: &str, cancellable: P) -> Result<(gio::File, String), Error> {
-        let cancellable = cancellable.into();
-        let cancellable = cancellable.to_glib_none();
-        unsafe {
-            let mut out_root = ptr::null_mut();
-            let mut out_commit = ptr::null_mut();
-            let mut error = ptr::null_mut();
-            let _ = ffi::ostree_repo_read_commit(self.to_glib_none().0, ref_.to_glib_none().0, &mut out_root, &mut out_commit, cancellable.0, &mut error);
-            if error.is_null() { Ok((from_glib_full(out_root), from_glib_full(out_commit))) } else { Err(from_glib_full(error)) }
-        }
-    }
-
-    fn read_commit_detached_metadata<'a, P: Into<Option<&'a gio::Cancellable>>>(&self, checksum: &str, cancellable: P) -> Result<glib::Variant, Error> {
-        let cancellable = cancellable.into();
-        let cancellable = cancellable.to_glib_none();
-        unsafe {
-            let mut out_metadata = ptr::null_mut();
-            let mut error = ptr::null_mut();
-            let _ = ffi::ostree_repo_read_commit_detached_metadata(self.to_glib_none().0, checksum.to_glib_none().0, &mut out_metadata, cancellable.0, &mut error);
-            if error.is_null() { Ok(from_glib_full(out_metadata)) } else { Err(from_glib_full(error)) }
-        }
-    }
-
-    fn regenerate_summary<'a, 'b, P: Into<Option<&'a glib::Variant>>, Q: Into<Option<&'b gio::Cancellable>>>(&self, additional_metadata: P, cancellable: Q) -> Result<(), Error> {
-        let additional_metadata = additional_metadata.into();
-        let additional_metadata = additional_metadata.to_glib_none();
-        let cancellable = cancellable.into();
-        let cancellable = cancellable.to_glib_none();
-        unsafe {
-            let mut error = ptr::null_mut();
-            let _ = ffi::ostree_repo_regenerate_summary(self.to_glib_none().0, additional_metadata.0, cancellable.0, &mut error);
-            if error.is_null() { Ok(()) } else { Err(from_glib_full(error)) }
-        }
-    }
-
-    fn reload_config<'a, P: Into<Option<&'a gio::Cancellable>>>(&self, cancellable: P) -> Result<(), Error> {
-        let cancellable = cancellable.into();
-        let cancellable = cancellable.to_glib_none();
-        unsafe {
-            let mut error = ptr::null_mut();
-            let _ = ffi::ostree_repo_reload_config(self.to_glib_none().0, cancellable.0, &mut error);
-            if error.is_null() { Ok(()) } else { Err(from_glib_full(error)) }
-        }
-    }
-
-    fn remote_add<'a, 'b, P: Into<Option<&'a glib::Variant>>, Q: Into<Option<&'b gio::Cancellable>>>(&self, name: &str, url: &str, options: P, cancellable: Q) -> Result<(), Error> {
-        let options = options.into();
-        let options = options.to_glib_none();
-        let cancellable = cancellable.into();
-        let cancellable = cancellable.to_glib_none();
-        unsafe {
-            let mut error = ptr::null_mut();
-            let _ = ffi::ostree_repo_remote_add(self.to_glib_none().0, name.to_glib_none().0, url.to_glib_none().0, options.0, cancellable.0, &mut error);
-            if error.is_null() { Ok(()) } else { Err(from_glib_full(error)) }
-        }
-    }
-
-    fn remote_change<'a, 'b, 'c, P: IsA<gio::File> + 'a, Q: Into<Option<&'a P>>, R: Into<Option<&'b glib::Variant>>, S: Into<Option<&'c gio::Cancellable>>>(&self, sysroot: Q, changeop: RepoRemoteChange, name: &str, url: &str, options: R, cancellable: S) -> Result<(), Error> {
-        let sysroot = sysroot.into();
-        let sysroot = sysroot.to_glib_none();
-        let options = options.into();
-        let options = options.to_glib_none();
-        let cancellable = cancellable.into();
-        let cancellable = cancellable.to_glib_none();
-        unsafe {
-            let mut error = ptr::null_mut();
-            let _ = ffi::ostree_repo_remote_change(self.to_glib_none().0, sysroot.0, changeop.to_glib(), name.to_glib_none().0, url.to_glib_none().0, options.0, cancellable.0, &mut error);
-            if error.is_null() { Ok(()) } else { Err(from_glib_full(error)) }
-        }
-    }
-
-    fn remote_delete<'a, P: Into<Option<&'a gio::Cancellable>>>(&self, name: &str, cancellable: P) -> Result<(), Error> {
-        let cancellable = cancellable.into();
-        let cancellable = cancellable.to_glib_none();
-        unsafe {
-            let mut error = ptr::null_mut();
-            let _ = ffi::ostree_repo_remote_delete(self.to_glib_none().0, name.to_glib_none().0, cancellable.0, &mut error);
-            if error.is_null() { Ok(()) } else { Err(from_glib_full(error)) }
-        }
-    }
-
-    fn remote_fetch_summary<'a, P: Into<Option<&'a gio::Cancellable>>>(&self, name: &str, cancellable: P) -> Result<(glib::Bytes, glib::Bytes), Error> {
-        let cancellable = cancellable.into();
-        let cancellable = cancellable.to_glib_none();
-        unsafe {
-            let mut out_summary = ptr::null_mut();
-            let mut out_signatures = ptr::null_mut();
-            let mut error = ptr::null_mut();
-            let _ = ffi::ostree_repo_remote_fetch_summary(self.to_glib_none().0, name.to_glib_none().0, &mut out_summary, &mut out_signatures, cancellable.0, &mut error);
-            if error.is_null() { Ok((from_glib_full(out_summary), from_glib_full(out_signatures))) } else { Err(from_glib_full(error)) }
-        }
-    }
-
-    fn remote_fetch_summary_with_options<'a, 'b, P: Into<Option<&'a glib::Variant>>, Q: Into<Option<&'b gio::Cancellable>>>(&self, name: &str, options: P, cancellable: Q) -> Result<(glib::Bytes, glib::Bytes), Error> {
-        let options = options.into();
-        let options = options.to_glib_none();
-        let cancellable = cancellable.into();
-        let cancellable = cancellable.to_glib_none();
-        unsafe {
-            let mut out_summary = ptr::null_mut();
-            let mut out_signatures = ptr::null_mut();
-            let mut error = ptr::null_mut();
-            let _ = ffi::ostree_repo_remote_fetch_summary_with_options(self.to_glib_none().0, name.to_glib_none().0, options.0, &mut out_summary, &mut out_signatures, cancellable.0, &mut error);
-            if error.is_null() { Ok((from_glib_full(out_summary), from_glib_full(out_signatures))) } else { Err(from_glib_full(error)) }
-        }
-    }
-
-    fn remote_get_gpg_verify(&self, name: &str) -> Result<bool, Error> {
-        unsafe {
-            let mut out_gpg_verify = mem::uninitialized();
-            let mut error = ptr::null_mut();
-            let _ = ffi::ostree_repo_remote_get_gpg_verify(self.to_glib_none().0, name.to_glib_none().0, &mut out_gpg_verify, &mut error);
-            if error.is_null() { Ok(from_glib(out_gpg_verify)) } else { Err(from_glib_full(error)) }
-        }
-    }
-
-    fn remote_get_gpg_verify_summary(&self, name: &str) -> Result<bool, Error> {
-        unsafe {
-            let mut out_gpg_verify_summary = mem::uninitialized();
-            let mut error = ptr::null_mut();
-            let _ = ffi::ostree_repo_remote_get_gpg_verify_summary(self.to_glib_none().0, name.to_glib_none().0, &mut out_gpg_verify_summary, &mut error);
-            if error.is_null() { Ok(from_glib(out_gpg_verify_summary)) } else { Err(from_glib_full(error)) }
-        }
-    }
-
-    fn remote_get_url(&self, name: &str) -> Result<String, Error> {
-        unsafe {
-            let mut out_url = ptr::null_mut();
-            let mut error = ptr::null_mut();
-            let _ = ffi::ostree_repo_remote_get_url(self.to_glib_none().0, name.to_glib_none().0, &mut out_url, &mut error);
-            if error.is_null() { Ok(from_glib_full(out_url)) } else { Err(from_glib_full(error)) }
-        }
-    }
-
-    fn remote_list(&self) -> Vec<String> {
-        unsafe {
-            let mut out_n_remotes = mem::uninitialized();
-            let ret = FromGlibContainer::from_glib_full_num(ffi::ostree_repo_remote_list(self.to_glib_none().0, &mut out_n_remotes), out_n_remotes as usize);
-            ret
-        }
-    }
-
-    //#[cfg(any(feature = "v2018_6", feature = "dox"))]
-    //fn remote_list_collection_refs<'a, P: Into<Option<&'a gio::Cancellable>>>(&self, remote_name: &str, out_all_refs: /*Unknown conversion*//*Unimplemented*/HashTable TypeId { ns_id: 1, id: 0 }/TypeId { ns_id: 0, id: 28 }, cancellable: P) -> Result<(), Error> {
-    //    unsafe { TODO: call ffi::ostree_repo_remote_list_collection_refs() }
-    //}
-
-    //fn remote_list_refs<'a, P: Into<Option<&'a gio::Cancellable>>>(&self, remote_name: &str, out_all_refs: /*Unknown conversion*//*Unimplemented*/HashTable TypeId { ns_id: 0, id: 28 }/TypeId { ns_id: 0, id: 28 }, cancellable: P) -> Result<(), Error> {
-    //    unsafe { TODO: call ffi::ostree_repo_remote_list_refs() }
-    //}
-
-    #[cfg(any(feature = "v2018_6", feature = "dox"))]
-    fn resolve_collection_ref<'a, P: Into<Option<&'a gio::Cancellable>>>(&self, ref_: &CollectionRef, allow_noent: bool, flags: RepoResolveRevExtFlags, cancellable: P) -> Result<Option<String>, Error> {
-        let cancellable = cancellable.into();
-        let cancellable = cancellable.to_glib_none();
-        unsafe {
-            let mut out_rev = ptr::null_mut();
-            let mut error = ptr::null_mut();
-            let _ = ffi::ostree_repo_resolve_collection_ref(self.to_glib_none().0, ref_.to_glib_none().0, allow_noent.to_glib(), flags.to_glib(), &mut out_rev, cancellable.0, &mut error);
-            if error.is_null() { Ok(from_glib_full(out_rev)) } else { Err(from_glib_full(error)) }
-        }
-    }
-
-    #[cfg(any(feature = "v2018_6", feature = "dox"))]
-    fn resolve_keyring_for_collection<'a, P: Into<Option<&'a gio::Cancellable>>>(&self, collection_id: &str, cancellable: P) -> Result<Remote, Error> {
-        let cancellable = cancellable.into();
-        let cancellable = cancellable.to_glib_none();
-        unsafe {
-            let mut error = ptr::null_mut();
-            let ret = ffi::ostree_repo_resolve_keyring_for_collection(self.to_glib_none().0, collection_id.to_glib_none().0, cancellable.0, &mut error);
-            if error.is_null() { Ok(from_glib_full(ret)) } else { Err(from_glib_full(error)) }
-        }
-    }
-
-    fn resolve_rev(&self, refspec: &str, allow_noent: bool) -> Result<String, Error> {
-        unsafe {
-            let mut out_rev = ptr::null_mut();
-            let mut error = ptr::null_mut();
-            let _ = ffi::ostree_repo_resolve_rev(self.to_glib_none().0, refspec.to_glib_none().0, allow_noent.to_glib(), &mut out_rev, &mut error);
-            if error.is_null() { Ok(from_glib_full(out_rev)) } else { Err(from_glib_full(error)) }
-        }
-    }
-
-    fn resolve_rev_ext(&self, refspec: &str, allow_noent: bool, flags: RepoResolveRevExtFlags) -> Result<String, Error> {
-        unsafe {
-            let mut out_rev = ptr::null_mut();
-            let mut error = ptr::null_mut();
-            let _ = ffi::ostree_repo_resolve_rev_ext(self.to_glib_none().0, refspec.to_glib_none().0, allow_noent.to_glib(), flags.to_glib(), &mut out_rev, &mut error);
-            if error.is_null() { Ok(from_glib_full(out_rev)) } else { Err(from_glib_full(error)) }
-        }
-    }
-
-    fn scan_hardlinks<'a, P: Into<Option<&'a gio::Cancellable>>>(&self, cancellable: P) -> Result<(), Error> {
-        let cancellable = cancellable.into();
-        let cancellable = cancellable.to_glib_none();
-        unsafe {
-            let mut error = ptr::null_mut();
-            let _ = ffi::ostree_repo_scan_hardlinks(self.to_glib_none().0, cancellable.0, &mut error);
-            if error.is_null() { Ok(()) } else { Err(from_glib_full(error)) }
-        }
-    }
-
-    fn set_alias_ref_immediate<'a, 'b, 'c, P: Into<Option<&'a str>>, Q: Into<Option<&'b str>>, R: Into<Option<&'c gio::Cancellable>>>(&self, remote: P, ref_: &str, target: Q, cancellable: R) -> Result<(), Error> {
-        let remote = remote.into();
-        let remote = remote.to_glib_none();
-        let target = target.into();
-        let target = target.to_glib_none();
-        let cancellable = cancellable.into();
-        let cancellable = cancellable.to_glib_none();
-        unsafe {
-            let mut error = ptr::null_mut();
-            let _ = ffi::ostree_repo_set_alias_ref_immediate(self.to_glib_none().0, remote.0, ref_.to_glib_none().0, target.0, cancellable.0, &mut error);
-            if error.is_null() { Ok(()) } else { Err(from_glib_full(error)) }
-        }
-    }
-
-    fn set_cache_dir<'a, P: Into<Option<&'a gio::Cancellable>>>(&self, dfd: i32, path: &str, cancellable: P) -> Result<(), Error> {
-        let cancellable = cancellable.into();
-        let cancellable = cancellable.to_glib_none();
-        unsafe {
-            let mut error = ptr::null_mut();
-            let _ = ffi::ostree_repo_set_cache_dir(self.to_glib_none().0, dfd, path.to_glib_none().0, cancellable.0, &mut error);
-            if error.is_null() { Ok(()) } else { Err(from_glib_full(error)) }
-        }
-    }
-
-    #[cfg(any(feature = "v2018_6", feature = "dox"))]
-    fn set_collection_id<'a, P: Into<Option<&'a str>>>(&self, collection_id: P) -> Result<(), Error> {
-        let collection_id = collection_id.into();
-        let collection_id = collection_id.to_glib_none();
-        unsafe {
-            let mut error = ptr::null_mut();
-            let _ = ffi::ostree_repo_set_collection_id(self.to_glib_none().0, collection_id.0, &mut error);
-            if error.is_null() { Ok(()) } else { Err(from_glib_full(error)) }
-        }
-    }
-
-    #[cfg(any(feature = "v2018_6", feature = "dox"))]
-    fn set_collection_ref_immediate<'a, 'b, P: Into<Option<&'a str>>, Q: Into<Option<&'b gio::Cancellable>>>(&self, ref_: &CollectionRef, checksum: P, cancellable: Q) -> Result<(), Error> {
-        let checksum = checksum.into();
-        let checksum = checksum.to_glib_none();
-        let cancellable = cancellable.into();
-        let cancellable = cancellable.to_glib_none();
-        unsafe {
-            let mut error = ptr::null_mut();
-            let _ = ffi::ostree_repo_set_collection_ref_immediate(self.to_glib_none().0, ref_.to_glib_none().0, checksum.0, cancellable.0, &mut error);
-            if error.is_null() { Ok(()) } else { Err(from_glib_full(error)) }
-        }
-    }
-
-    fn set_disable_fsync(&self, disable_fsync: bool) {
-        unsafe {
-            ffi::ostree_repo_set_disable_fsync(self.to_glib_none().0, disable_fsync.to_glib());
-        }
-    }
-
-    fn set_ref_immediate<'a, 'b, 'c, P: Into<Option<&'a str>>, Q: Into<Option<&'b str>>, R: Into<Option<&'c gio::Cancellable>>>(&self, remote: P, ref_: &str, checksum: Q, cancellable: R) -> Result<(), Error> {
-        let remote = remote.into();
-        let remote = remote.to_glib_none();
-        let checksum = checksum.into();
-        let checksum = checksum.to_glib_none();
-        let cancellable = cancellable.into();
-        let cancellable = cancellable.to_glib_none();
-        unsafe {
-            let mut error = ptr::null_mut();
-            let _ = ffi::ostree_repo_set_ref_immediate(self.to_glib_none().0, remote.0, ref_.to_glib_none().0, checksum.0, cancellable.0, &mut error);
-            if error.is_null() { Ok(()) } else { Err(from_glib_full(error)) }
-        }
-    }
-
-    fn sign_commit<'a, 'b, P: Into<Option<&'a str>>, Q: Into<Option<&'b gio::Cancellable>>>(&self, commit_checksum: &str, key_id: &str, homedir: P, cancellable: Q) -> Result<(), Error> {
-        let homedir = homedir.into();
-        let homedir = homedir.to_glib_none();
-        let cancellable = cancellable.into();
-        let cancellable = cancellable.to_glib_none();
-        unsafe {
-            let mut error = ptr::null_mut();
-            let _ = ffi::ostree_repo_sign_commit(self.to_glib_none().0, commit_checksum.to_glib_none().0, key_id.to_glib_none().0, homedir.0, cancellable.0, &mut error);
-            if error.is_null() { Ok(()) } else { Err(from_glib_full(error)) }
-        }
-    }
-
-    fn sign_delta<'a, P: Into<Option<&'a gio::Cancellable>>>(&self, from_commit: &str, to_commit: &str, key_id: &str, homedir: &str, cancellable: P) -> Result<(), Error> {
-        let cancellable = cancellable.into();
-        let cancellable = cancellable.to_glib_none();
-        unsafe {
-            let mut error = ptr::null_mut();
-            let _ = ffi::ostree_repo_sign_delta(self.to_glib_none().0, from_commit.to_glib_none().0, to_commit.to_glib_none().0, key_id.to_glib_none().0, homedir.to_glib_none().0, cancellable.0, &mut error);
-            if error.is_null() { Ok(()) } else { Err(from_glib_full(error)) }
-        }
-    }
-
-    fn static_delta_execute_offline<'a, P: IsA<gio::File>, Q: Into<Option<&'a gio::Cancellable>>>(&self, dir_or_file: &P, skip_validation: bool, cancellable: Q) -> Result<(), Error> {
-        let cancellable = cancellable.into();
-        let cancellable = cancellable.to_glib_none();
-        unsafe {
-            let mut error = ptr::null_mut();
-            let _ = ffi::ostree_repo_static_delta_execute_offline(self.to_glib_none().0, dir_or_file.to_glib_none().0, skip_validation.to_glib(), cancellable.0, &mut error);
-            if error.is_null() { Ok(()) } else { Err(from_glib_full(error)) }
-        }
-    }
-
-    fn static_delta_generate<'a, 'b, 'c, P: Into<Option<&'a glib::Variant>>, Q: Into<Option<&'b glib::Variant>>, R: Into<Option<&'c gio::Cancellable>>>(&self, opt: StaticDeltaGenerateOpt, from: &str, to: &str, metadata: P, params: Q, cancellable: R) -> Result<(), Error> {
-        let metadata = metadata.into();
-        let metadata = metadata.to_glib_none();
-        let params = params.into();
-        let params = params.to_glib_none();
-        let cancellable = cancellable.into();
-        let cancellable = cancellable.to_glib_none();
-        unsafe {
-            let mut error = ptr::null_mut();
-            let _ = ffi::ostree_repo_static_delta_generate(self.to_glib_none().0, opt.to_glib(), from.to_glib_none().0, to.to_glib_none().0, metadata.0, params.0, cancellable.0, &mut error);
-            if error.is_null() { Ok(()) } else { Err(from_glib_full(error)) }
-        }
-    }
-
-    #[cfg(any(feature = "v2018_6", feature = "dox"))]
-    fn transaction_set_collection_ref<'a, P: Into<Option<&'a str>>>(&self, ref_: &CollectionRef, checksum: P) {
-        let checksum = checksum.into();
-        let checksum = checksum.to_glib_none();
-        unsafe {
-            ffi::ostree_repo_transaction_set_collection_ref(self.to_glib_none().0, ref_.to_glib_none().0, checksum.0);
-        }
-    }
-
-    fn transaction_set_ref<'a, 'b, P: Into<Option<&'a str>>, Q: Into<Option<&'b str>>>(&self, remote: P, ref_: &str, checksum: Q) {
-        let remote = remote.into();
-        let remote = remote.to_glib_none();
-        let checksum = checksum.into();
-        let checksum = checksum.to_glib_none();
-        unsafe {
-            ffi::ostree_repo_transaction_set_ref(self.to_glib_none().0, remote.0, ref_.to_glib_none().0, checksum.0);
-        }
-    }
-
-    fn transaction_set_refspec<'a, P: Into<Option<&'a str>>>(&self, refspec: &str, checksum: P) {
-        let checksum = checksum.into();
-        let checksum = checksum.to_glib_none();
-        unsafe {
-            ffi::ostree_repo_transaction_set_refspec(self.to_glib_none().0, refspec.to_glib_none().0, checksum.0);
-        }
-    }
-
-    //fn traverse_commit<'a, P: Into<Option<&'a gio::Cancellable>>>(&self, commit_checksum: &str, maxdepth: i32, out_reachable: /*Unknown conversion*//*Unimplemented*/HashTable TypeId { ns_id: 2, id: 181 }/TypeId { ns_id: 2, id: 181 }, cancellable: P) -> Result<(), Error> {
-    //    unsafe { TODO: call ffi::ostree_repo_traverse_commit() }
-    //}
-
-    //fn traverse_commit_union<'a, P: Into<Option<&'a gio::Cancellable>>>(&self, commit_checksum: &str, maxdepth: i32, inout_reachable: /*Unknown conversion*//*Unimplemented*/HashTable TypeId { ns_id: 0, id: 25 }/TypeId { ns_id: 0, id: 25 }, cancellable: P) -> Result<(), Error> {
-    //    unsafe { TODO: call ffi::ostree_repo_traverse_commit_union() }
-    //}
-
-    //#[cfg(any(feature = "v2018_5", feature = "dox"))]
-    //fn traverse_commit_union_with_parents<'a, P: Into<Option<&'a gio::Cancellable>>>(&self, commit_checksum: &str, maxdepth: i32, inout_reachable: /*Unknown conversion*//*Unimplemented*/HashTable TypeId { ns_id: 0, id: 25 }/TypeId { ns_id: 0, id: 25 }, inout_parents: /*Unknown conversion*//*Unimplemented*/HashTable TypeId { ns_id: 0, id: 25 }/TypeId { ns_id: 0, id: 25 }, cancellable: P) -> Result<(), Error> {
-    //    unsafe { TODO: call ffi::ostree_repo_traverse_commit_union_with_parents() }
-    //}
-
-    //#[cfg(any(feature = "v2018_6", feature = "dox"))]
-    //fn traverse_reachable_refs<'a, P: Into<Option<&'a gio::Cancellable>>>(&self, depth: u32, reachable: /*Unknown conversion*//*Unimplemented*/HashTable TypeId { ns_id: 2, id: 181 }/TypeId { ns_id: 2, id: 181 }, cancellable: P) -> Result<(), Error> {
-    //    unsafe { TODO: call ffi::ostree_repo_traverse_reachable_refs() }
-    //}
-
-    fn verify_commit<'a, 'b, 'c, P: IsA<gio::File> + 'a, Q: Into<Option<&'a P>>, R: IsA<gio::File> + 'b, S: Into<Option<&'b R>>, T: Into<Option<&'c gio::Cancellable>>>(&self, commit_checksum: &str, keyringdir: Q, extra_keyring: S, cancellable: T) -> Result<(), Error> {
-        let keyringdir = keyringdir.into();
-        let keyringdir = keyringdir.to_glib_none();
-        let extra_keyring = extra_keyring.into();
-        let extra_keyring = extra_keyring.to_glib_none();
-        let cancellable = cancellable.into();
-        let cancellable = cancellable.to_glib_none();
-        unsafe {
-            let mut error = ptr::null_mut();
-            let _ = ffi::ostree_repo_verify_commit(self.to_glib_none().0, commit_checksum.to_glib_none().0, keyringdir.0, extra_keyring.0, cancellable.0, &mut error);
-            if error.is_null() { Ok(()) } else { Err(from_glib_full(error)) }
-        }
-    }
-
-    fn verify_commit_ext<'a, 'b, 'c, P: IsA<gio::File> + 'a, Q: Into<Option<&'a P>>, R: IsA<gio::File> + 'b, S: Into<Option<&'b R>>, T: Into<Option<&'c gio::Cancellable>>>(&self, commit_checksum: &str, keyringdir: Q, extra_keyring: S, cancellable: T) -> Result<GpgVerifyResult, Error> {
-        let keyringdir = keyringdir.into();
-        let keyringdir = keyringdir.to_glib_none();
-        let extra_keyring = extra_keyring.into();
-        let extra_keyring = extra_keyring.to_glib_none();
-        let cancellable = cancellable.into();
-        let cancellable = cancellable.to_glib_none();
-        unsafe {
-            let mut error = ptr::null_mut();
-            let ret = ffi::ostree_repo_verify_commit_ext(self.to_glib_none().0, commit_checksum.to_glib_none().0, keyringdir.0, extra_keyring.0, cancellable.0, &mut error);
-            if error.is_null() { Ok(from_glib_full(ret)) } else { Err(from_glib_full(error)) }
-        }
-    }
-
-    fn verify_commit_for_remote<'a, P: Into<Option<&'a gio::Cancellable>>>(&self, commit_checksum: &str, remote_name: &str, cancellable: P) -> Result<GpgVerifyResult, Error> {
-        let cancellable = cancellable.into();
-        let cancellable = cancellable.to_glib_none();
-        unsafe {
-            let mut error = ptr::null_mut();
-            let ret = ffi::ostree_repo_verify_commit_for_remote(self.to_glib_none().0, commit_checksum.to_glib_none().0, remote_name.to_glib_none().0, cancellable.0, &mut error);
-            if error.is_null() { Ok(from_glib_full(ret)) } else { Err(from_glib_full(error)) }
-        }
-    }
-
-    fn verify_summary<'a, P: Into<Option<&'a gio::Cancellable>>>(&self, remote_name: &str, summary: &glib::Bytes, signatures: &glib::Bytes, cancellable: P) -> Result<GpgVerifyResult, Error> {
-        let cancellable = cancellable.into();
-        let cancellable = cancellable.to_glib_none();
-        unsafe {
-            let mut error = ptr::null_mut();
-            let ret = ffi::ostree_repo_verify_summary(self.to_glib_none().0, remote_name.to_glib_none().0, summary.to_glib_none().0, signatures.to_glib_none().0, cancellable.0, &mut error);
-            if error.is_null() { Ok(from_glib_full(ret)) } else { Err(from_glib_full(error)) }
-        }
-    }
-
-    fn write_archive_to_mtree<'a, 'b, P: IsA<gio::File>, Q: Into<Option<&'a RepoCommitModifier>>, R: Into<Option<&'b gio::Cancellable>>>(&self, archive: &P, mtree: &MutableTree, modifier: Q, autocreate_parents: bool, cancellable: R) -> Result<(), Error> {
-        let modifier = modifier.into();
-        let modifier = modifier.to_glib_none();
-        let cancellable = cancellable.into();
-        let cancellable = cancellable.to_glib_none();
-        unsafe {
-            let mut error = ptr::null_mut();
-            let _ = ffi::ostree_repo_write_archive_to_mtree(self.to_glib_none().0, archive.to_glib_none().0, mtree.to_glib_none().0, modifier.0, autocreate_parents.to_glib(), cancellable.0, &mut error);
-            if error.is_null() { Ok(()) } else { Err(from_glib_full(error)) }
-        }
-    }
-
-    fn write_commit<'a, 'b, 'c, 'd, 'e, P: Into<Option<&'a str>>, Q: Into<Option<&'b str>>, R: Into<Option<&'c str>>, S: Into<Option<&'d glib::Variant>>, T: Into<Option<&'e gio::Cancellable>>>(&self, parent: P, subject: Q, body: R, metadata: S, root: &RepoFile, cancellable: T) -> Result<String, Error> {
-        let parent = parent.into();
-        let parent = parent.to_glib_none();
-        let subject = subject.into();
-        let subject = subject.to_glib_none();
-        let body = body.into();
-        let body = body.to_glib_none();
-        let metadata = metadata.into();
-        let metadata = metadata.to_glib_none();
-        let cancellable = cancellable.into();
-        let cancellable = cancellable.to_glib_none();
-        unsafe {
-            let mut out_commit = ptr::null_mut();
-            let mut error = ptr::null_mut();
-            let _ = ffi::ostree_repo_write_commit(self.to_glib_none().0, parent.0, subject.0, body.0, metadata.0, root.to_glib_none().0, &mut out_commit, cancellable.0, &mut error);
-            if error.is_null() { Ok(from_glib_full(out_commit)) } else { Err(from_glib_full(error)) }
-        }
-    }
-
-    fn write_commit_detached_metadata<'a, 'b, P: Into<Option<&'a glib::Variant>>, Q: Into<Option<&'b gio::Cancellable>>>(&self, checksum: &str, metadata: P, cancellable: Q) -> Result<(), Error> {
-        let metadata = metadata.into();
-        let metadata = metadata.to_glib_none();
-        let cancellable = cancellable.into();
-        let cancellable = cancellable.to_glib_none();
-        unsafe {
-            let mut error = ptr::null_mut();
-            let _ = ffi::ostree_repo_write_commit_detached_metadata(self.to_glib_none().0, checksum.to_glib_none().0, metadata.0, cancellable.0, &mut error);
-            if error.is_null() { Ok(()) } else { Err(from_glib_full(error)) }
-        }
-    }
-
-    fn write_commit_with_time<'a, 'b, 'c, 'd, 'e, P: Into<Option<&'a str>>, Q: Into<Option<&'b str>>, R: Into<Option<&'c str>>, S: Into<Option<&'d glib::Variant>>, T: Into<Option<&'e gio::Cancellable>>>(&self, parent: P, subject: Q, body: R, metadata: S, root: &RepoFile, time: u64, cancellable: T) -> Result<String, Error> {
-        let parent = parent.into();
-        let parent = parent.to_glib_none();
-        let subject = subject.into();
-        let subject = subject.to_glib_none();
-        let body = body.into();
-        let body = body.to_glib_none();
-        let metadata = metadata.into();
-        let metadata = metadata.to_glib_none();
-        let cancellable = cancellable.into();
-        let cancellable = cancellable.to_glib_none();
-        unsafe {
-            let mut out_commit = ptr::null_mut();
-            let mut error = ptr::null_mut();
-            let _ = ffi::ostree_repo_write_commit_with_time(self.to_glib_none().0, parent.0, subject.0, body.0, metadata.0, root.to_glib_none().0, time, &mut out_commit, cancellable.0, &mut error);
-            if error.is_null() { Ok(from_glib_full(out_commit)) } else { Err(from_glib_full(error)) }
-        }
-    }
-
-    fn write_config(&self, new_config: &glib::KeyFile) -> Result<(), Error> {
-        unsafe {
-            let mut error = ptr::null_mut();
-            let _ = ffi::ostree_repo_write_config(self.to_glib_none().0, new_config.to_glib_none().0, &mut error);
-            if error.is_null() { Ok(()) } else { Err(from_glib_full(error)) }
-        }
-    }
-
-    //fn write_content<'a, 'b, P: Into<Option<&'a str>>, Q: IsA<gio::InputStream>, R: Into<Option<&'b gio::Cancellable>>>(&self, expected_checksum: P, object_input: &Q, length: u64, out_csum: /*Unknown conversion*//*Unimplemented*/FixedArray TypeId { ns_id: 0, id: 3 }; 32, cancellable: R) -> Result<(), Error> {
-    //    unsafe { TODO: call ffi::ostree_repo_write_content() }
-    //}
-
-    fn write_content_trusted<'a, P: IsA<gio::InputStream>, Q: Into<Option<&'a gio::Cancellable>>>(&self, checksum: &str, object_input: &P, length: u64, cancellable: Q) -> Result<(), Error> {
-        let cancellable = cancellable.into();
-        let cancellable = cancellable.to_glib_none();
-        unsafe {
-            let mut error = ptr::null_mut();
-            let _ = ffi::ostree_repo_write_content_trusted(self.to_glib_none().0, checksum.to_glib_none().0, object_input.to_glib_none().0, length, cancellable.0, &mut error);
-            if error.is_null() { Ok(()) } else { Err(from_glib_full(error)) }
-        }
-    }
-
-    fn write_dfd_to_mtree<'a, 'b, P: Into<Option<&'a RepoCommitModifier>>, Q: Into<Option<&'b gio::Cancellable>>>(&self, dfd: i32, path: &str, mtree: &MutableTree, modifier: P, cancellable: Q) -> Result<(), Error> {
-        let modifier = modifier.into();
-        let modifier = modifier.to_glib_none();
-        let cancellable = cancellable.into();
-        let cancellable = cancellable.to_glib_none();
-        unsafe {
-            let mut error = ptr::null_mut();
-            let _ = ffi::ostree_repo_write_dfd_to_mtree(self.to_glib_none().0, dfd, path.to_glib_none().0, mtree.to_glib_none().0, modifier.0, cancellable.0, &mut error);
-            if error.is_null() { Ok(()) } else { Err(from_glib_full(error)) }
-        }
-    }
-
-    fn write_directory_to_mtree<'a, 'b, P: IsA<gio::File>, Q: Into<Option<&'a RepoCommitModifier>>, R: Into<Option<&'b gio::Cancellable>>>(&self, dir: &P, mtree: &MutableTree, modifier: Q, cancellable: R) -> Result<(), Error> {
-        let modifier = modifier.into();
-        let modifier = modifier.to_glib_none();
-        let cancellable = cancellable.into();
-        let cancellable = cancellable.to_glib_none();
-        unsafe {
-            let mut error = ptr::null_mut();
-            let _ = ffi::ostree_repo_write_directory_to_mtree(self.to_glib_none().0, dir.to_glib_none().0, mtree.to_glib_none().0, modifier.0, cancellable.0, &mut error);
-            if error.is_null() { Ok(()) } else { Err(from_glib_full(error)) }
-        }
-    }
-
-    //fn write_metadata<'a, 'b, P: Into<Option<&'a str>>, Q: Into<Option<&'b gio::Cancellable>>>(&self, objtype: ObjectType, expected_checksum: P, object: &glib::Variant, out_csum: /*Unknown conversion*//*Unimplemented*/FixedArray TypeId { ns_id: 0, id: 3 }; 32, cancellable: Q) -> Result<(), Error> {
-    //    unsafe { TODO: call ffi::ostree_repo_write_metadata() }
-    //}
-
-    fn write_metadata_stream_trusted<'a, P: IsA<gio::InputStream>, Q: Into<Option<&'a gio::Cancellable>>>(&self, objtype: ObjectType, checksum: &str, object_input: &P, length: u64, cancellable: Q) -> Result<(), Error> {
-        let cancellable = cancellable.into();
-        let cancellable = cancellable.to_glib_none();
-        unsafe {
-            let mut error = ptr::null_mut();
-            let _ = ffi::ostree_repo_write_metadata_stream_trusted(self.to_glib_none().0, objtype.to_glib(), checksum.to_glib_none().0, object_input.to_glib_none().0, length, cancellable.0, &mut error);
-            if error.is_null() { Ok(()) } else { Err(from_glib_full(error)) }
-        }
-    }
-
-    fn write_metadata_trusted<'a, P: Into<Option<&'a gio::Cancellable>>>(&self, objtype: ObjectType, checksum: &str, variant: &glib::Variant, cancellable: P) -> Result<(), Error> {
-        let cancellable = cancellable.into();
-        let cancellable = cancellable.to_glib_none();
-        unsafe {
-            let mut error = ptr::null_mut();
-            let _ = ffi::ostree_repo_write_metadata_trusted(self.to_glib_none().0, objtype.to_glib(), checksum.to_glib_none().0, variant.to_glib_none().0, cancellable.0, &mut error);
-            if error.is_null() { Ok(()) } else { Err(from_glib_full(error)) }
-        }
-    }
-
-    fn write_mtree<'a, P: Into<Option<&'a gio::Cancellable>>>(&self, mtree: &MutableTree, cancellable: P) -> Result<gio::File, Error> {
-        let cancellable = cancellable.into();
-        let cancellable = cancellable.to_glib_none();
-        unsafe {
-            let mut out_file = ptr::null_mut();
-            let mut error = ptr::null_mut();
-            let _ = ffi::ostree_repo_write_mtree(self.to_glib_none().0, mtree.to_glib_none().0, &mut out_file, cancellable.0, &mut error);
-            if error.is_null() { Ok(from_glib_full(out_file)) } else { Err(from_glib_full(error)) }
-        }
-    }
-
-    fn get_property_remotes_config_dir(&self) -> Option<String> {
-        unsafe {
-            let mut value = Value::from_type(<String as StaticType>::static_type());
-            gobject_ffi::g_object_get_property(self.to_glib_none().0, "remotes-config-dir".to_glib_none().0, value.to_glib_none_mut().0);
-            value.get()
-        }
-    }
-
-    fn get_property_sysroot_path(&self) -> Option<gio::File> {
-        unsafe {
-            let mut value = Value::from_type(<gio::File as StaticType>::static_type());
-            gobject_ffi::g_object_get_property(self.to_glib_none().0, "sysroot-path".to_glib_none().0, value.to_glib_none_mut().0);
-            value.get()
-        }
-    }
-
-    fn connect_gpg_verify_result<F: Fn(&Self, &str, &GpgVerifyResult) + 'static>(&self, f: F) -> SignalHandlerId {
-        unsafe {
-            let f: Box_<Box_<Fn(&Self, &str, &GpgVerifyResult) + 'static>> = Box_::new(Box_::new(f));
-            connect(self.to_glib_none().0, "gpg-verify-result",
-                transmute(gpg_verify_result_trampoline::<Self> as usize), Box_::into_raw(f) as *mut _)
-        }
-    }
-}
-
-unsafe extern "C" fn gpg_verify_result_trampoline<P>(this: *mut ffi::OstreeRepo, checksum: *mut libc::c_char, result: *mut ffi::OstreeGpgVerifyResult, f: glib_ffi::gpointer)
-where P: IsA<Repo> {
-    let f: &&(Fn(&P, &str, &GpgVerifyResult) + 'static) = transmute(f);
-    f(&Repo::from_glib_borrow(this).downcast_unchecked(), &String::from_glib_none(checksum), &from_glib_borrow(result))
-}
diff --git a/rust-bindings/rust/libostree/src/auto/repo_commit_modifier.rs b/rust-bindings/rust/libostree/src/auto/repo_commit_modifier.rs
deleted file mode 100644 (file)
index 1b7dac2..0000000
+++ /dev/null
@@ -1,49 +0,0 @@
-// This file was generated by gir (https://github.com/gtk-rs/gir @ ffda6f9)
-// from gir-files (https://github.com/gtk-rs/gir-files @ ???)
-// DO NOT EDIT
-
-#[cfg(any(feature = "v2017_13", feature = "dox"))]
-use RepoDevInoCache;
-use SePolicy;
-use ffi;
-use glib::translate::*;
-use glib_ffi;
-use gobject_ffi;
-use std::mem;
-use std::ptr;
-
-glib_wrapper! {
-    #[derive(Debug, PartialEq, Eq, PartialOrd, Ord, Hash)]
-    pub struct RepoCommitModifier(Shared<ffi::OstreeRepoCommitModifier>);
-
-    match fn {
-        ref => |ptr| ffi::ostree_repo_commit_modifier_ref(ptr),
-        unref => |ptr| ffi::ostree_repo_commit_modifier_unref(ptr),
-        get_type => || ffi::ostree_repo_commit_modifier_get_type(),
-    }
-}
-
-impl RepoCommitModifier {
-    //pub fn new<'a, P: Into<Option<&'a /*Unimplemented*/RepoCommitFilter>>>(flags: /*Ignored*/RepoCommitModifierFlags, commit_filter: P, destroy_notify: /*Unknown conversion*//*Unimplemented*/DestroyNotify) -> RepoCommitModifier {
-    //    unsafe { TODO: call ffi::ostree_repo_commit_modifier_new() }
-    //}
-
-    #[cfg(any(feature = "v2017_13", feature = "dox"))]
-    pub fn set_devino_cache(&self, cache: &RepoDevInoCache) {
-        unsafe {
-            ffi::ostree_repo_commit_modifier_set_devino_cache(self.to_glib_none().0, cache.to_glib_none().0);
-        }
-    }
-
-    pub fn set_sepolicy<'a, P: Into<Option<&'a SePolicy>>>(&self, sepolicy: P) {
-        let sepolicy = sepolicy.into();
-        let sepolicy = sepolicy.to_glib_none();
-        unsafe {
-            ffi::ostree_repo_commit_modifier_set_sepolicy(self.to_glib_none().0, sepolicy.0);
-        }
-    }
-
-    //pub fn set_xattr_callback(&self, callback: /*Unknown conversion*//*Unimplemented*/RepoCommitModifierXattrCallback, destroy: /*Unknown conversion*//*Unimplemented*/DestroyNotify) {
-    //    unsafe { TODO: call ffi::ostree_repo_commit_modifier_set_xattr_callback() }
-    //}
-}
diff --git a/rust-bindings/rust/libostree/src/auto/repo_dev_ino_cache.rs b/rust-bindings/rust/libostree/src/auto/repo_dev_ino_cache.rs
deleted file mode 100644 (file)
index b12c3fd..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-// This file was generated by gir (https://github.com/gtk-rs/gir @ ffda6f9)
-// from gir-files (https://github.com/gtk-rs/gir-files @ ???)
-// DO NOT EDIT
-
-use ffi;
-use glib::translate::*;
-use glib_ffi;
-use gobject_ffi;
-use std::mem;
-use std::ptr;
-
-glib_wrapper! {
-    #[derive(Debug, PartialEq, Eq, PartialOrd, Ord, Hash)]
-    pub struct RepoDevInoCache(Shared<ffi::OstreeRepoDevInoCache>);
-
-    match fn {
-        ref => |ptr| ffi::ostree_repo_devino_cache_ref(ptr),
-        unref => |ptr| ffi::ostree_repo_devino_cache_unref(ptr),
-        get_type => || ffi::ostree_repo_devino_cache_get_type(),
-    }
-}
-
-impl RepoDevInoCache {
-    pub fn new() -> RepoDevInoCache {
-        unsafe {
-            from_glib_full(ffi::ostree_repo_devino_cache_new())
-        }
-    }
-}
-
-impl Default for RepoDevInoCache {
-    fn default() -> Self {
-        Self::new()
-    }
-}
diff --git a/rust-bindings/rust/libostree/src/auto/repo_file.rs b/rust-bindings/rust/libostree/src/auto/repo_file.rs
deleted file mode 100644 (file)
index de64823..0000000
+++ /dev/null
@@ -1,104 +0,0 @@
-// This file was generated by gir (https://github.com/gtk-rs/gir @ ffda6f9)
-// from gir-files (https://github.com/gtk-rs/gir-files @ ???)
-// DO NOT EDIT
-
-use Error;
-use Repo;
-use ffi;
-use gio;
-use gio_ffi;
-use glib;
-use glib::object::IsA;
-use glib::translate::*;
-use glib_ffi;
-use gobject_ffi;
-use std::mem;
-use std::ptr;
-
-glib_wrapper! {
-    pub struct RepoFile(Object<ffi::OstreeRepoFile, ffi::OstreeRepoFileClass>): [
-        gio::File => gio_ffi::GFile,
-    ];
-
-    match fn {
-        get_type => || ffi::ostree_repo_file_get_type(),
-    }
-}
-
-pub trait RepoFileExt {
-    fn ensure_resolved(&self) -> Result<(), Error>;
-
-    fn get_checksum(&self) -> Option<String>;
-
-    fn get_repo(&self) -> Option<Repo>;
-
-    fn get_root(&self) -> Option<RepoFile>;
-
-    fn tree_get_contents(&self) -> Option<glib::Variant>;
-
-    fn tree_get_contents_checksum(&self) -> Option<String>;
-
-    fn tree_get_metadata(&self) -> Option<glib::Variant>;
-
-    fn tree_get_metadata_checksum(&self) -> Option<String>;
-
-    fn tree_set_metadata(&self, checksum: &str, metadata: &glib::Variant);
-}
-
-impl<O: IsA<RepoFile>> RepoFileExt for O {
-    fn ensure_resolved(&self) -> Result<(), Error> {
-        unsafe {
-            let mut error = ptr::null_mut();
-            let _ = ffi::ostree_repo_file_ensure_resolved(self.to_glib_none().0, &mut error);
-            if error.is_null() { Ok(()) } else { Err(from_glib_full(error)) }
-        }
-    }
-
-    fn get_checksum(&self) -> Option<String> {
-        unsafe {
-            from_glib_none(ffi::ostree_repo_file_get_checksum(self.to_glib_none().0))
-        }
-    }
-
-    fn get_repo(&self) -> Option<Repo> {
-        unsafe {
-            from_glib_none(ffi::ostree_repo_file_get_repo(self.to_glib_none().0))
-        }
-    }
-
-    fn get_root(&self) -> Option<RepoFile> {
-        unsafe {
-            from_glib_none(ffi::ostree_repo_file_get_root(self.to_glib_none().0))
-        }
-    }
-
-    fn tree_get_contents(&self) -> Option<glib::Variant> {
-        unsafe {
-            from_glib_full(ffi::ostree_repo_file_tree_get_contents(self.to_glib_none().0))
-        }
-    }
-
-    fn tree_get_contents_checksum(&self) -> Option<String> {
-        unsafe {
-            from_glib_none(ffi::ostree_repo_file_tree_get_contents_checksum(self.to_glib_none().0))
-        }
-    }
-
-    fn tree_get_metadata(&self) -> Option<glib::Variant> {
-        unsafe {
-            from_glib_full(ffi::ostree_repo_file_tree_get_metadata(self.to_glib_none().0))
-        }
-    }
-
-    fn tree_get_metadata_checksum(&self) -> Option<String> {
-        unsafe {
-            from_glib_none(ffi::ostree_repo_file_tree_get_metadata_checksum(self.to_glib_none().0))
-        }
-    }
-
-    fn tree_set_metadata(&self, checksum: &str, metadata: &glib::Variant) {
-        unsafe {
-            ffi::ostree_repo_file_tree_set_metadata(self.to_glib_none().0, checksum.to_glib_none().0, metadata.to_glib_none().0);
-        }
-    }
-}
diff --git a/rust-bindings/rust/libostree/src/auto/repo_transaction_stats.rs b/rust-bindings/rust/libostree/src/auto/repo_transaction_stats.rs
deleted file mode 100644 (file)
index 1136967..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-// This file was generated by gir (https://github.com/gtk-rs/gir @ ffda6f9)
-// from gir-files (https://github.com/gtk-rs/gir-files @ ???)
-// DO NOT EDIT
-
-use ffi;
-use glib::translate::*;
-use glib_ffi;
-use gobject_ffi;
-use std::mem;
-use std::ptr;
-
-glib_wrapper! {
-    #[derive(Debug, PartialEq, Eq, PartialOrd, Ord, Hash)]
-    pub struct RepoTransactionStats(Boxed<ffi::OstreeRepoTransactionStats>);
-
-    match fn {
-        copy => |ptr| gobject_ffi::g_boxed_copy(ffi::ostree_repo_transaction_stats_get_type(), ptr as *mut _) as *mut ffi::OstreeRepoTransactionStats,
-        free => |ptr| gobject_ffi::g_boxed_free(ffi::ostree_repo_transaction_stats_get_type(), ptr as *mut _),
-        get_type => || ffi::ostree_repo_transaction_stats_get_type(),
-    }
-}
diff --git a/rust-bindings/rust/libostree/src/auto/se_policy.rs b/rust-bindings/rust/libostree/src/auto/se_policy.rs
deleted file mode 100644 (file)
index 11b5b68..0000000
+++ /dev/null
@@ -1,127 +0,0 @@
-// This file was generated by gir (https://github.com/gtk-rs/gir @ ffda6f9)
-// from gir-files (https://github.com/gtk-rs/gir-files @ ???)
-// DO NOT EDIT
-
-use Error;
-use SePolicyRestoreconFlags;
-use ffi;
-use gio;
-use glib;
-use glib::StaticType;
-use glib::Value;
-use glib::object::IsA;
-use glib::translate::*;
-use glib_ffi;
-use gobject_ffi;
-use std::mem;
-use std::ptr;
-
-glib_wrapper! {
-    pub struct SePolicy(Object<ffi::OstreeSePolicy>);
-
-    match fn {
-        get_type => || ffi::ostree_sepolicy_get_type(),
-    }
-}
-
-impl SePolicy {
-    pub fn new<'a, P: IsA<gio::File>, Q: Into<Option<&'a gio::Cancellable>>>(path: &P, cancellable: Q) -> Result<SePolicy, Error> {
-        let cancellable = cancellable.into();
-        let cancellable = cancellable.to_glib_none();
-        unsafe {
-            let mut error = ptr::null_mut();
-            let ret = ffi::ostree_sepolicy_new(path.to_glib_none().0, cancellable.0, &mut error);
-            if error.is_null() { Ok(from_glib_full(ret)) } else { Err(from_glib_full(error)) }
-        }
-    }
-
-    pub fn new_at<'a, P: Into<Option<&'a gio::Cancellable>>>(rootfs_dfd: i32, cancellable: P) -> Result<SePolicy, Error> {
-        let cancellable = cancellable.into();
-        let cancellable = cancellable.to_glib_none();
-        unsafe {
-            let mut error = ptr::null_mut();
-            let ret = ffi::ostree_sepolicy_new_at(rootfs_dfd, cancellable.0, &mut error);
-            if error.is_null() { Ok(from_glib_full(ret)) } else { Err(from_glib_full(error)) }
-        }
-    }
-
-    //pub fn fscreatecon_cleanup<P: Into<Option</*Unimplemented*/Fundamental: Pointer>>>(unused: P) {
-    //    unsafe { TODO: call ffi::ostree_sepolicy_fscreatecon_cleanup() }
-    //}
-}
-
-pub trait SePolicyExt {
-    fn get_csum(&self) -> Option<String>;
-
-    fn get_label<'a, P: Into<Option<&'a gio::Cancellable>>>(&self, relpath: &str, unix_mode: u32, cancellable: P) -> Result<String, Error>;
-
-    fn get_name(&self) -> Option<String>;
-
-    fn get_path(&self) -> Option<gio::File>;
-
-    fn restorecon<'a, 'b, P: Into<Option<&'a gio::FileInfo>>, Q: IsA<gio::File>, R: Into<Option<&'b gio::Cancellable>>>(&self, path: &str, info: P, target: &Q, flags: SePolicyRestoreconFlags, cancellable: R) -> Result<String, Error>;
-
-    fn setfscreatecon(&self, path: &str, mode: u32) -> Result<(), Error>;
-
-    fn get_property_rootfs_dfd(&self) -> i32;
-}
-
-impl<O: IsA<SePolicy> + IsA<glib::object::Object>> SePolicyExt for O {
-    fn get_csum(&self) -> Option<String> {
-        unsafe {
-            from_glib_none(ffi::ostree_sepolicy_get_csum(self.to_glib_none().0))
-        }
-    }
-
-    fn get_label<'a, P: Into<Option<&'a gio::Cancellable>>>(&self, relpath: &str, unix_mode: u32, cancellable: P) -> Result<String, Error> {
-        let cancellable = cancellable.into();
-        let cancellable = cancellable.to_glib_none();
-        unsafe {
-            let mut out_label = ptr::null_mut();
-            let mut error = ptr::null_mut();
-            let _ = ffi::ostree_sepolicy_get_label(self.to_glib_none().0, relpath.to_glib_none().0, unix_mode, &mut out_label, cancellable.0, &mut error);
-            if error.is_null() { Ok(from_glib_full(out_label)) } else { Err(from_glib_full(error)) }
-        }
-    }
-
-    fn get_name(&self) -> Option<String> {
-        unsafe {
-            from_glib_none(ffi::ostree_sepolicy_get_name(self.to_glib_none().0))
-        }
-    }
-
-    fn get_path(&self) -> Option<gio::File> {
-        unsafe {
-            from_glib_none(ffi::ostree_sepolicy_get_path(self.to_glib_none().0))
-        }
-    }
-
-    fn restorecon<'a, 'b, P: Into<Option<&'a gio::FileInfo>>, Q: IsA<gio::File>, R: Into<Option<&'b gio::Cancellable>>>(&self, path: &str, info: P, target: &Q, flags: SePolicyRestoreconFlags, cancellable: R) -> Result<String, Error> {
-        let info = info.into();
-        let info = info.to_glib_none();
-        let cancellable = cancellable.into();
-        let cancellable = cancellable.to_glib_none();
-        unsafe {
-            let mut out_new_label = ptr::null_mut();
-            let mut error = ptr::null_mut();
-            let _ = ffi::ostree_sepolicy_restorecon(self.to_glib_none().0, path.to_glib_none().0, info.0, target.to_glib_none().0, flags.to_glib(), &mut out_new_label, cancellable.0, &mut error);
-            if error.is_null() { Ok(from_glib_full(out_new_label)) } else { Err(from_glib_full(error)) }
-        }
-    }
-
-    fn setfscreatecon(&self, path: &str, mode: u32) -> Result<(), Error> {
-        unsafe {
-            let mut error = ptr::null_mut();
-            let _ = ffi::ostree_sepolicy_setfscreatecon(self.to_glib_none().0, path.to_glib_none().0, mode, &mut error);
-            if error.is_null() { Ok(()) } else { Err(from_glib_full(error)) }
-        }
-    }
-
-    fn get_property_rootfs_dfd(&self) -> i32 {
-        unsafe {
-            let mut value = Value::from_type(<i32 as StaticType>::static_type());
-            gobject_ffi::g_object_get_property(self.to_glib_none().0, "rootfs-dfd".to_glib_none().0, value.to_glib_none_mut().0);
-            value.get().unwrap()
-        }
-    }
-}
diff --git a/rust-bindings/rust/libostree/src/lib.rs b/rust-bindings/rust/libostree/src/lib.rs
deleted file mode 100644 (file)
index a32a211..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-extern crate gio_sys as gio_ffi;
-extern crate glib_sys as glib_ffi;
-extern crate gobject_sys as gobject_ffi;
-extern crate libostree_sys as ffi;
-#[macro_use]
-extern crate glib;
-extern crate gio;
-extern crate libc;
-#[macro_use]
-extern crate bitflags;
-#[macro_use]
-extern crate lazy_static;
-
-use glib::Error;
-
-// re-exports
-#[cfg_attr(feature = "cargo-clippy", allow(clippy))]
-mod auto;
-pub use auto::functions::*;
-pub use auto::*;
-
-mod repo;
-
-mod object_name;
-pub use object_name::ObjectName;
-
-// public modules
-pub mod prelude {
-    pub use auto::traits::*;
-    pub use repo::RepoExtManual;
-}
diff --git a/rust-bindings/rust/libostree/src/object_name.rs b/rust-bindings/rust/libostree/src/object_name.rs
deleted file mode 100644 (file)
index e649492..0000000
+++ /dev/null
@@ -1,74 +0,0 @@
-use ffi;
-use functions::{object_name_deserialize, object_name_serialize, object_to_string};
-use glib;
-use glib::translate::*;
-use glib_ffi;
-use std::fmt::Display;
-use std::fmt::Error;
-use std::fmt::Formatter;
-use std::hash::Hash;
-use std::hash::Hasher;
-use ObjectType;
-
-fn hash_object_name(v: &glib::Variant) -> u32 {
-    unsafe { ffi::ostree_hash_object_name(v.to_glib_none().0 as glib_ffi::gconstpointer) }
-}
-
-#[derive(Eq, Debug)]
-pub struct ObjectName {
-    variant: glib::Variant,
-    checksum: String,
-    object_type: ObjectType,
-}
-
-impl ObjectName {
-    pub fn new_from_variant(variant: glib::Variant) -> ObjectName {
-        let deserialize = object_name_deserialize(&variant);
-        ObjectName {
-            variant,
-            checksum: deserialize.0,
-            object_type: deserialize.1,
-        }
-    }
-
-    pub fn new<S: Into<String>>(checksum: S, object_type: ObjectType) -> ObjectName {
-        let checksum = checksum.into();
-        let variant = object_name_serialize(checksum.as_str(), object_type).unwrap();
-        ObjectName {
-            variant,
-            checksum,
-            object_type,
-        }
-    }
-
-    pub fn checksum(&self) -> &str {
-        self.checksum.as_ref()
-    }
-
-    pub fn object_type(&self) -> ObjectType {
-        self.object_type
-    }
-
-    pub fn name(&self) -> String {
-        object_to_string(self.checksum(), self.object_type())
-            .expect("type checks should make this safe")
-    }
-}
-
-impl Display for ObjectName {
-    fn fmt(&self, f: &mut Formatter) -> Result<(), Error> {
-        write!(f, "{}", self.name())
-    }
-}
-
-impl Hash for ObjectName {
-    fn hash<H: Hasher>(&self, state: &mut H) {
-        state.write_u32(hash_object_name(&self.variant));
-    }
-}
-
-impl PartialEq for ObjectName {
-    fn eq(&self, other: &ObjectName) -> bool {
-        self.checksum == other.checksum && self.object_type == other.object_type
-    }
-}
diff --git a/rust-bindings/rust/libostree/src/repo.rs b/rust-bindings/rust/libostree/src/repo.rs
deleted file mode 100644 (file)
index 279fe8f..0000000
+++ /dev/null
@@ -1,138 +0,0 @@
-use auto::{Repo, RepoListRefsExtFlags};
-use ffi;
-use gio;
-use glib;
-use glib::translate::*;
-use glib::Error;
-use glib::IsA;
-use glib_ffi;
-use std::collections::{HashMap, HashSet};
-use std::path::Path;
-use std::ptr;
-use ObjectName;
-
-unsafe extern "C" fn read_variant_table(
-    _key: glib_ffi::gpointer,
-    value: glib_ffi::gpointer,
-    hash_set: glib_ffi::gpointer,
-) {
-    let value: glib::Variant = from_glib_none(value as *const glib_ffi::GVariant);
-    let set: &mut HashSet<ObjectName> = &mut *(hash_set as *mut HashSet<ObjectName>);
-    set.insert(ObjectName::new_from_variant(value));
-}
-
-unsafe fn from_glib_container_variant_set(ptr: *mut glib_ffi::GHashTable) -> HashSet<ObjectName> {
-    let mut set = HashSet::new();
-    glib_ffi::g_hash_table_foreach(
-        ptr,
-        Some(read_variant_table),
-        &mut set as *mut HashSet<ObjectName> as *mut _,
-    );
-    glib_ffi::g_hash_table_unref(ptr);
-    set
-}
-
-pub trait RepoExtManual {
-    fn new_for_path<P: AsRef<Path>>(path: P) -> Repo;
-
-    fn traverse_commit<'a, P: Into<Option<&'a gio::Cancellable>>>(
-        &self,
-        commit_checksum: &str,
-        maxdepth: i32,
-        cancellable: P,
-    ) -> Result<HashSet<ObjectName>, Error>;
-
-    fn list_refs<'a, 'b, P: Into<Option<&'a str>>, Q: Into<Option<&'b gio::Cancellable>>>(
-        &self,
-        refspec_prefix: P,
-        cancellable: Q,
-    ) -> Result<HashMap<String, String>, Error>;
-
-    fn list_refs_ext<'a, 'b, P: Into<Option<&'a str>>, Q: Into<Option<&'b gio::Cancellable>>>(
-        &self,
-        refspec_prefix: P,
-        flags: RepoListRefsExtFlags,
-        cancellable: Q,
-    ) -> Result<HashMap<String, String>, Error>;
-}
-
-impl<O: IsA<Repo> + IsA<glib::Object> + Clone + 'static> RepoExtManual for O {
-    fn new_for_path<P: AsRef<Path>>(path: P) -> Repo {
-        Repo::new(&gio::File::new_for_path(path.as_ref()))
-    }
-
-    fn traverse_commit<'a, P: Into<Option<&'a gio::Cancellable>>>(
-        &self,
-        commit_checksum: &str,
-        maxdepth: i32,
-        cancellable: P,
-    ) -> Result<HashSet<ObjectName>, Error> {
-        unsafe {
-            let mut error = ptr::null_mut();
-            let mut hashtable = ptr::null_mut();
-            let _ = ffi::ostree_repo_traverse_commit(
-                self.to_glib_none().0,
-                commit_checksum.to_glib_none().0,
-                maxdepth,
-                &mut hashtable,
-                cancellable.into().to_glib_none().0,
-                &mut error,
-            );
-            if error.is_null() {
-                Ok(from_glib_container_variant_set(hashtable))
-            } else {
-                Err(from_glib_full(error))
-            }
-        }
-    }
-
-    fn list_refs<'a, 'b, P: Into<Option<&'a str>>, Q: Into<Option<&'b gio::Cancellable>>>(
-        &self,
-        refspec_prefix: P,
-        cancellable: Q,
-    ) -> Result<HashMap<String, String>, Error> {
-        unsafe {
-            let mut error = ptr::null_mut();
-            let mut hashtable = ptr::null_mut();
-            let _ = ffi::ostree_repo_list_refs(
-                self.to_glib_none().0,
-                refspec_prefix.into().to_glib_none().0,
-                &mut hashtable,
-                cancellable.into().to_glib_none().0,
-                &mut error,
-            );
-
-            if error.is_null() {
-                Ok(FromGlibPtrContainer::from_glib_container(hashtable))
-            } else {
-                Err(from_glib_full(error))
-            }
-        }
-    }
-
-    fn list_refs_ext<'a, 'b, P: Into<Option<&'a str>>, Q: Into<Option<&'b gio::Cancellable>>>(
-        &self,
-        refspec_prefix: P,
-        flags: RepoListRefsExtFlags,
-        cancellable: Q,
-    ) -> Result<HashMap<String, String>, Error> {
-        unsafe {
-            let mut error = ptr::null_mut();
-            let mut hashtable = ptr::null_mut();
-            let _ = ffi::ostree_repo_list_refs_ext(
-                self.to_glib_none().0,
-                refspec_prefix.into().to_glib_none().0,
-                &mut hashtable,
-                flags.to_glib(),
-                cancellable.into().to_glib_none().0,
-                &mut error,
-            );
-
-            if error.is_null() {
-                Ok(FromGlibPtrContainer::from_glib_container(hashtable))
-            } else {
-                Err(from_glib_full(error))
-            }
-        }
-    }
-}
diff --git a/rust-bindings/rust/libostree/tests/roundtrip.rs b/rust-bindings/rust/libostree/tests/roundtrip.rs
deleted file mode 100644 (file)
index d8bdbed..0000000
+++ /dev/null
@@ -1,66 +0,0 @@
-extern crate gio;
-extern crate glib;
-extern crate libostree;
-extern crate tempfile;
-
-use glib::prelude::*;
-use libostree::prelude::*;
-use std::fs;
-use std::io;
-use std::io::Write;
-
-fn create_repo(repodir: &tempfile::TempDir) -> Result<libostree::Repo, glib::Error> {
-    let repo = libostree::Repo::new_for_path(repodir.path());
-    repo.create(libostree::RepoMode::Archive, None)?;
-    Ok(repo)
-}
-
-fn create_test_file(treedir: &tempfile::TempDir) -> Result<(), io::Error> {
-    let mut testfile = fs::File::create(treedir.path().join("test.txt"))?;
-    write!(testfile, "test")?;
-    Ok(())
-}
-
-fn create_mtree(
-    treedir: &tempfile::TempDir,
-    repo: &libostree::Repo,
-) -> Result<libostree::MutableTree, glib::Error> {
-    let gfile = gio::File::new_for_path(treedir.path());
-    let mtree = libostree::MutableTree::new();
-    repo.write_directory_to_mtree(&gfile, &mtree, None, None)?;
-    Ok(mtree)
-}
-
-fn commit_mtree(
-    repo: &libostree::Repo,
-    mtree: &libostree::MutableTree,
-) -> Result<String, glib::Error> {
-    repo.prepare_transaction(None)?;
-    let repo_file = repo.write_mtree(mtree, None)?.downcast().unwrap();
-    let checksum = repo.write_commit(None, "Test Commit", None, None, &repo_file, None)?;
-    repo.transaction_set_ref(None, "test", checksum.as_str());
-    repo.commit_transaction(None)?;
-    Ok(checksum)
-}
-
-fn open_repo(repodir: &tempfile::TempDir) -> Result<libostree::Repo, glib::Error> {
-    let repo = libostree::Repo::new_for_path(repodir.path());
-    repo.open(None)?;
-    Ok(repo)
-}
-
-#[test]
-fn should_commit_content_to_repo_and_list_refs_again() {
-    let repodir = tempfile::tempdir().unwrap();
-    let treedir = tempfile::tempdir().unwrap();
-
-    let repo = create_repo(&repodir).expect("failed to create repo");
-    create_test_file(&treedir).expect("failed to create test file");
-    let mtree = create_mtree(&treedir, &repo).expect("failed to build mtree");
-    let checksum = commit_mtree(&repo, &mtree).expect("failed to commit mtree");
-
-    let repo = open_repo(&repodir).expect("failed to open repo");
-    let refs = repo.list_refs(None, None).expect("failed to list refs");
-    assert_eq!(refs.len(), 1);
-    assert_eq!(refs["test"], checksum);
-}
diff --git a/rust-bindings/rust/src/auto/async_progress.rs b/rust-bindings/rust/src/auto/async_progress.rs
new file mode 100644 (file)
index 0000000..c441b5c
--- /dev/null
@@ -0,0 +1,161 @@
+// This file was generated by gir (https://github.com/gtk-rs/gir @ ffda6f9)
+// from gir-files (https://github.com/gtk-rs/gir-files @ ???)
+// DO NOT EDIT
+
+use ffi;
+use glib;
+use glib::object::Downcast;
+use glib::object::IsA;
+use glib::signal::SignalHandlerId;
+use glib::signal::connect;
+use glib::translate::*;
+use glib_ffi;
+use gobject_ffi;
+use std::boxed::Box as Box_;
+use std::mem;
+use std::mem::transmute;
+use std::ptr;
+
+glib_wrapper! {
+    pub struct AsyncProgress(Object<ffi::OstreeAsyncProgress, ffi::OstreeAsyncProgressClass>);
+
+    match fn {
+        get_type => || ffi::ostree_async_progress_get_type(),
+    }
+}
+
+impl AsyncProgress {
+    pub fn new() -> AsyncProgress {
+        unsafe {
+            from_glib_full(ffi::ostree_async_progress_new())
+        }
+    }
+
+    //pub fn new_and_connect<P: Into<Option</*Unimplemented*/Fundamental: Pointer>>, Q: Into<Option</*Unimplemented*/Fundamental: Pointer>>>(changed: P, user_data: Q) -> AsyncProgress {
+    //    unsafe { TODO: call ffi::ostree_async_progress_new_and_connect() }
+    //}
+}
+
+impl Default for AsyncProgress {
+    fn default() -> Self {
+        Self::new()
+    }
+}
+
+pub trait AsyncProgressExt {
+    fn finish(&self);
+
+    //#[cfg(any(feature = "v2017_6", feature = "dox"))]
+    //fn get(&self, : /*Unknown conversion*//*Unimplemented*/Fundamental: VarArgs);
+
+    #[cfg(any(feature = "v2017_6", feature = "dox"))]
+    fn get_status(&self) -> Option<String>;
+
+    fn get_uint(&self, key: &str) -> u32;
+
+    fn get_uint64(&self, key: &str) -> u64;
+
+    #[cfg(any(feature = "v2017_6", feature = "dox"))]
+    fn get_variant(&self, key: &str) -> Option<glib::Variant>;
+
+    //#[cfg(any(feature = "v2017_6", feature = "dox"))]
+    //fn set(&self, : /*Unknown conversion*//*Unimplemented*/Fundamental: VarArgs);
+
+    #[cfg(any(feature = "v2017_6", feature = "dox"))]
+    fn set_status<'a, P: Into<Option<&'a str>>>(&self, status: P);
+
+    fn set_uint(&self, key: &str, value: u32);
+
+    fn set_uint64(&self, key: &str, value: u64);
+
+    #[cfg(any(feature = "v2017_6", feature = "dox"))]
+    fn set_variant(&self, key: &str, value: &glib::Variant);
+
+    fn connect_changed<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId;
+}
+
+impl<O: IsA<AsyncProgress> + IsA<glib::object::Object>> AsyncProgressExt for O {
+    fn finish(&self) {
+        unsafe {
+            ffi::ostree_async_progress_finish(self.to_glib_none().0);
+        }
+    }
+
+    //#[cfg(any(feature = "v2017_6", feature = "dox"))]
+    //fn get(&self, : /*Unknown conversion*//*Unimplemented*/Fundamental: VarArgs) {
+    //    unsafe { TODO: call ffi::ostree_async_progress_get() }
+    //}
+
+    #[cfg(any(feature = "v2017_6", feature = "dox"))]
+    fn get_status(&self) -> Option<String> {
+        unsafe {
+            from_glib_full(ffi::ostree_async_progress_get_status(self.to_glib_none().0))
+        }
+    }
+
+    fn get_uint(&self, key: &str) -> u32 {
+        unsafe {
+            ffi::ostree_async_progress_get_uint(self.to_glib_none().0, key.to_glib_none().0)
+        }
+    }
+
+    fn get_uint64(&self, key: &str) -> u64 {
+        unsafe {
+            ffi::ostree_async_progress_get_uint64(self.to_glib_none().0, key.to_glib_none().0)
+        }
+    }
+
+    #[cfg(any(feature = "v2017_6", feature = "dox"))]
+    fn get_variant(&self, key: &str) -> Option<glib::Variant> {
+        unsafe {
+            from_glib_full(ffi::ostree_async_progress_get_variant(self.to_glib_none().0, key.to_glib_none().0))
+        }
+    }
+
+    //#[cfg(any(feature = "v2017_6", feature = "dox"))]
+    //fn set(&self, : /*Unknown conversion*//*Unimplemented*/Fundamental: VarArgs) {
+    //    unsafe { TODO: call ffi::ostree_async_progress_set() }
+    //}
+
+    #[cfg(any(feature = "v2017_6", feature = "dox"))]
+    fn set_status<'a, P: Into<Option<&'a str>>>(&self, status: P) {
+        let status = status.into();
+        let status = status.to_glib_none();
+        unsafe {
+            ffi::ostree_async_progress_set_status(self.to_glib_none().0, status.0);
+        }
+    }
+
+    fn set_uint(&self, key: &str, value: u32) {
+        unsafe {
+            ffi::ostree_async_progress_set_uint(self.to_glib_none().0, key.to_glib_none().0, value);
+        }
+    }
+
+    fn set_uint64(&self, key: &str, value: u64) {
+        unsafe {
+            ffi::ostree_async_progress_set_uint64(self.to_glib_none().0, key.to_glib_none().0, value);
+        }
+    }
+
+    #[cfg(any(feature = "v2017_6", feature = "dox"))]
+    fn set_variant(&self, key: &str, value: &glib::Variant) {
+        unsafe {
+            ffi::ostree_async_progress_set_variant(self.to_glib_none().0, key.to_glib_none().0, value.to_glib_none().0);
+        }
+    }
+
+    fn connect_changed<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
+        unsafe {
+            let f: Box_<Box_<Fn(&Self) + 'static>> = Box_::new(Box_::new(f));
+            connect(self.to_glib_none().0, "changed",
+                transmute(changed_trampoline::<Self> as usize), Box_::into_raw(f) as *mut _)
+        }
+    }
+}
+
+unsafe extern "C" fn changed_trampoline<P>(this: *mut ffi::OstreeAsyncProgress, f: glib_ffi::gpointer)
+where P: IsA<AsyncProgress> {
+    let f: &&(Fn(&P) + 'static) = transmute(f);
+    f(&AsyncProgress::from_glib_borrow(this).downcast_unchecked())
+}
diff --git a/rust-bindings/rust/src/auto/collection_ref.rs b/rust-bindings/rust/src/auto/collection_ref.rs
new file mode 100644 (file)
index 0000000..d52f95c
--- /dev/null
@@ -0,0 +1,84 @@
+// This file was generated by gir (https://github.com/gtk-rs/gir @ ffda6f9)
+// from gir-files (https://github.com/gtk-rs/gir-files @ ???)
+// DO NOT EDIT
+
+use ffi;
+use glib::translate::*;
+use glib_ffi;
+use gobject_ffi;
+use std::hash;
+use std::mem;
+use std::ptr;
+
+glib_wrapper! {
+    #[derive(Debug, PartialOrd, Ord)]
+    pub struct CollectionRef(Boxed<ffi::OstreeCollectionRef>);
+
+    match fn {
+        copy => |ptr| gobject_ffi::g_boxed_copy(ffi::ostree_collection_ref_get_type(), ptr as *mut _) as *mut ffi::OstreeCollectionRef,
+        free => |ptr| gobject_ffi::g_boxed_free(ffi::ostree_collection_ref_get_type(), ptr as *mut _),
+        get_type => || ffi::ostree_collection_ref_get_type(),
+    }
+}
+
+impl CollectionRef {
+    #[cfg(any(feature = "v2018_6", feature = "dox"))]
+    pub fn new<'a, P: Into<Option<&'a str>>>(collection_id: P, ref_name: &str) -> CollectionRef {
+        let collection_id = collection_id.into();
+        let collection_id = collection_id.to_glib_none();
+        unsafe {
+            from_glib_full(ffi::ostree_collection_ref_new(collection_id.0, ref_name.to_glib_none().0))
+        }
+    }
+
+    #[cfg(any(feature = "v2018_6", feature = "dox"))]
+    pub fn dup(&self) -> Option<CollectionRef> {
+        unsafe {
+            from_glib_full(ffi::ostree_collection_ref_dup(self.to_glib_none().0))
+        }
+    }
+
+    #[cfg(any(feature = "v2018_6", feature = "dox"))]
+    pub fn dupv(refs: &[&CollectionRef]) -> Vec<CollectionRef> {
+        unsafe {
+            FromGlibPtrContainer::from_glib_full(ffi::ostree_collection_ref_dupv(refs.to_glib_none().0))
+        }
+    }
+
+    #[cfg(any(feature = "v2018_6", feature = "dox"))]
+    fn equal<'a, P: Into<Option<&'a CollectionRef>>>(&self, ref2: P) -> bool {
+        unsafe {
+            from_glib(ffi::ostree_collection_ref_equal(ToGlibPtr::<*mut ffi::OstreeCollectionRef>::to_glib_none(self).0 as glib_ffi::gconstpointer, ToGlibPtr::<*mut ffi::OstreeCollectionRef>::to_glib_none(ref2).0 as glib_ffi::gconstpointer))
+        }
+    }
+
+    #[cfg(any(feature = "v2018_6", feature = "dox"))]
+    pub fn freev(refs: &[&CollectionRef]) {
+        unsafe {
+            ffi::ostree_collection_ref_freev(refs.to_glib_full());
+        }
+    }
+
+    #[cfg(any(feature = "v2018_6", feature = "dox"))]
+    fn hash(&self) -> u32 {
+        unsafe {
+            ffi::ostree_collection_ref_hash(ToGlibPtr::<*mut ffi::OstreeCollectionRef>::to_glib_none(self).0 as glib_ffi::gconstpointer)
+        }
+    }
+}
+
+impl PartialEq for CollectionRef {
+    #[inline]
+    fn eq(&self, other: &Self) -> bool {
+        self.equal(other)
+    }
+}
+
+impl Eq for CollectionRef {}
+
+impl hash::Hash for CollectionRef {
+    #[inline]
+    fn hash<H>(&self, state: &mut H) where H: hash::Hasher {
+        hash::Hash::hash(&self.hash(), state)
+    }
+}
diff --git a/rust-bindings/rust/src/auto/constants.rs b/rust-bindings/rust/src/auto/constants.rs
new file mode 100644 (file)
index 0000000..7e6240b
--- /dev/null
@@ -0,0 +1,61 @@
+// This file was generated by gir (https://github.com/gtk-rs/gir @ ffda6f9)
+// from gir-files (https://github.com/gtk-rs/gir-files @ ???)
+// DO NOT EDIT
+
+use ffi;
+use std::ffi::CStr;
+
+lazy_static! {
+    pub static ref COMMIT_GVARIANT_STRING: &'static str = unsafe{CStr::from_ptr(ffi::OSTREE_COMMIT_GVARIANT_STRING).to_str().unwrap()};
+}
+#[cfg(any(feature = "v2018_6", feature = "dox"))]
+lazy_static! {
+    pub static ref COMMIT_META_KEY_COLLECTION_BINDING: &'static str = unsafe{CStr::from_ptr(ffi::OSTREE_COMMIT_META_KEY_COLLECTION_BINDING).to_str().unwrap()};
+}
+#[cfg(any(feature = "v2017_7", feature = "dox"))]
+lazy_static! {
+    pub static ref COMMIT_META_KEY_ENDOFLIFE: &'static str = unsafe{CStr::from_ptr(ffi::OSTREE_COMMIT_META_KEY_ENDOFLIFE).to_str().unwrap()};
+}
+#[cfg(any(feature = "v2017_7", feature = "dox"))]
+lazy_static! {
+    pub static ref COMMIT_META_KEY_ENDOFLIFE_REBASE: &'static str = unsafe{CStr::from_ptr(ffi::OSTREE_COMMIT_META_KEY_ENDOFLIFE_REBASE).to_str().unwrap()};
+}
+#[cfg(any(feature = "v2017_9", feature = "dox"))]
+lazy_static! {
+    pub static ref COMMIT_META_KEY_REF_BINDING: &'static str = unsafe{CStr::from_ptr(ffi::OSTREE_COMMIT_META_KEY_REF_BINDING).to_str().unwrap()};
+}
+#[cfg(any(feature = "v2017_13", feature = "dox"))]
+lazy_static! {
+    pub static ref COMMIT_META_KEY_SOURCE_TITLE: &'static str = unsafe{CStr::from_ptr(ffi::OSTREE_COMMIT_META_KEY_SOURCE_TITLE).to_str().unwrap()};
+}
+#[cfg(any(feature = "v2014_9", feature = "dox"))]
+lazy_static! {
+    pub static ref COMMIT_META_KEY_VERSION: &'static str = unsafe{CStr::from_ptr(ffi::OSTREE_COMMIT_META_KEY_VERSION).to_str().unwrap()};
+}
+lazy_static! {
+    pub static ref DIRMETA_GVARIANT_STRING: &'static str = unsafe{CStr::from_ptr(ffi::OSTREE_DIRMETA_GVARIANT_STRING).to_str().unwrap()};
+}
+lazy_static! {
+    pub static ref FILEMETA_GVARIANT_STRING: &'static str = unsafe{CStr::from_ptr(ffi::OSTREE_FILEMETA_GVARIANT_STRING).to_str().unwrap()};
+}
+#[cfg(any(feature = "v2018_3", feature = "dox"))]
+lazy_static! {
+    pub static ref ORIGIN_TRANSIENT_GROUP: &'static str = unsafe{CStr::from_ptr(ffi::OSTREE_ORIGIN_TRANSIENT_GROUP).to_str().unwrap()};
+}
+#[cfg(any(feature = "v2018_6", feature = "dox"))]
+lazy_static! {
+    pub static ref REPO_METADATA_REF: &'static str = unsafe{CStr::from_ptr(ffi::OSTREE_REPO_METADATA_REF).to_str().unwrap()};
+}
+lazy_static! {
+    pub static ref SUMMARY_GVARIANT_STRING: &'static str = unsafe{CStr::from_ptr(ffi::OSTREE_SUMMARY_GVARIANT_STRING).to_str().unwrap()};
+}
+lazy_static! {
+    pub static ref SUMMARY_SIG_GVARIANT_STRING: &'static str = unsafe{CStr::from_ptr(ffi::OSTREE_SUMMARY_SIG_GVARIANT_STRING).to_str().unwrap()};
+}
+lazy_static! {
+    pub static ref TREE_GVARIANT_STRING: &'static str = unsafe{CStr::from_ptr(ffi::OSTREE_TREE_GVARIANT_STRING).to_str().unwrap()};
+}
+#[cfg(any(feature = "v2017_4", feature = "dox"))]
+lazy_static! {
+    pub static ref VERSION_S: &'static str = unsafe{CStr::from_ptr(ffi::OSTREE_VERSION_S).to_str().unwrap()};
+}
diff --git a/rust-bindings/rust/src/auto/enums.rs b/rust-bindings/rust/src/auto/enums.rs
new file mode 100644 (file)
index 0000000..ef22ad0
--- /dev/null
@@ -0,0 +1,334 @@
+// This file was generated by gir (https://github.com/gtk-rs/gir @ ffda6f9)
+// from gir-files (https://github.com/gtk-rs/gir-files @ ???)
+// DO NOT EDIT
+
+use ffi;
+use glib::translate::*;
+
+#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
+#[derive(Clone, Copy)]
+pub enum GpgSignatureFormatFlags {
+    GpgSignatureFormatDefault,
+    #[doc(hidden)]
+    __Unknown(i32),
+}
+
+#[doc(hidden)]
+impl ToGlib for GpgSignatureFormatFlags {
+    type GlibType = ffi::OstreeGpgSignatureFormatFlags;
+
+    fn to_glib(&self) -> ffi::OstreeGpgSignatureFormatFlags {
+        match *self {
+            GpgSignatureFormatFlags::GpgSignatureFormatDefault => ffi::OSTREE_GPG_SIGNATURE_FORMAT_DEFAULT,
+            GpgSignatureFormatFlags::__Unknown(value) => value
+        }
+    }
+}
+
+#[doc(hidden)]
+impl FromGlib<ffi::OstreeGpgSignatureFormatFlags> for GpgSignatureFormatFlags {
+    fn from_glib(value: ffi::OstreeGpgSignatureFormatFlags) -> Self {
+        match value {
+            0 => GpgSignatureFormatFlags::GpgSignatureFormatDefault,
+            value => GpgSignatureFormatFlags::__Unknown(value),
+        }
+    }
+}
+
+#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
+#[derive(Clone, Copy)]
+pub enum ObjectType {
+    File,
+    DirTree,
+    DirMeta,
+    Commit,
+    TombstoneCommit,
+    CommitMeta,
+    PayloadLink,
+    #[doc(hidden)]
+    __Unknown(i32),
+}
+
+#[doc(hidden)]
+impl ToGlib for ObjectType {
+    type GlibType = ffi::OstreeObjectType;
+
+    fn to_glib(&self) -> ffi::OstreeObjectType {
+        match *self {
+            ObjectType::File => ffi::OSTREE_OBJECT_TYPE_FILE,
+            ObjectType::DirTree => ffi::OSTREE_OBJECT_TYPE_DIR_TREE,
+            ObjectType::DirMeta => ffi::OSTREE_OBJECT_TYPE_DIR_META,
+            ObjectType::Commit => ffi::OSTREE_OBJECT_TYPE_COMMIT,
+            ObjectType::TombstoneCommit => ffi::OSTREE_OBJECT_TYPE_TOMBSTONE_COMMIT,
+            ObjectType::CommitMeta => ffi::OSTREE_OBJECT_TYPE_COMMIT_META,
+            ObjectType::PayloadLink => ffi::OSTREE_OBJECT_TYPE_PAYLOAD_LINK,
+            ObjectType::__Unknown(value) => value
+        }
+    }
+}
+
+#[doc(hidden)]
+impl FromGlib<ffi::OstreeObjectType> for ObjectType {
+    fn from_glib(value: ffi::OstreeObjectType) -> Self {
+        match value {
+            1 => ObjectType::File,
+            2 => ObjectType::DirTree,
+            3 => ObjectType::DirMeta,
+            4 => ObjectType::Commit,
+            5 => ObjectType::TombstoneCommit,
+            6 => ObjectType::CommitMeta,
+            7 => ObjectType::PayloadLink,
+            value => ObjectType::__Unknown(value),
+        }
+    }
+}
+
+#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
+#[derive(Clone, Copy)]
+pub enum RepoCheckoutMode {
+    None,
+    User,
+    #[doc(hidden)]
+    __Unknown(i32),
+}
+
+#[doc(hidden)]
+impl ToGlib for RepoCheckoutMode {
+    type GlibType = ffi::OstreeRepoCheckoutMode;
+
+    fn to_glib(&self) -> ffi::OstreeRepoCheckoutMode {
+        match *self {
+            RepoCheckoutMode::None => ffi::OSTREE_REPO_CHECKOUT_MODE_NONE,
+            RepoCheckoutMode::User => ffi::OSTREE_REPO_CHECKOUT_MODE_USER,
+            RepoCheckoutMode::__Unknown(value) => value
+        }
+    }
+}
+
+#[doc(hidden)]
+impl FromGlib<ffi::OstreeRepoCheckoutMode> for RepoCheckoutMode {
+    fn from_glib(value: ffi::OstreeRepoCheckoutMode) -> Self {
+        match value {
+            0 => RepoCheckoutMode::None,
+            1 => RepoCheckoutMode::User,
+            value => RepoCheckoutMode::__Unknown(value),
+        }
+    }
+}
+
+#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
+#[derive(Clone, Copy)]
+pub enum RepoCheckoutOverwriteMode {
+    None,
+    UnionFiles,
+    AddFiles,
+    UnionIdentical,
+    #[doc(hidden)]
+    __Unknown(i32),
+}
+
+#[doc(hidden)]
+impl ToGlib for RepoCheckoutOverwriteMode {
+    type GlibType = ffi::OstreeRepoCheckoutOverwriteMode;
+
+    fn to_glib(&self) -> ffi::OstreeRepoCheckoutOverwriteMode {
+        match *self {
+            RepoCheckoutOverwriteMode::None => ffi::OSTREE_REPO_CHECKOUT_OVERWRITE_NONE,
+            RepoCheckoutOverwriteMode::UnionFiles => ffi::OSTREE_REPO_CHECKOUT_OVERWRITE_UNION_FILES,
+            RepoCheckoutOverwriteMode::AddFiles => ffi::OSTREE_REPO_CHECKOUT_OVERWRITE_ADD_FILES,
+            RepoCheckoutOverwriteMode::UnionIdentical => ffi::OSTREE_REPO_CHECKOUT_OVERWRITE_UNION_IDENTICAL,
+            RepoCheckoutOverwriteMode::__Unknown(value) => value
+        }
+    }
+}
+
+#[doc(hidden)]
+impl FromGlib<ffi::OstreeRepoCheckoutOverwriteMode> for RepoCheckoutOverwriteMode {
+    fn from_glib(value: ffi::OstreeRepoCheckoutOverwriteMode) -> Self {
+        match value {
+            0 => RepoCheckoutOverwriteMode::None,
+            1 => RepoCheckoutOverwriteMode::UnionFiles,
+            2 => RepoCheckoutOverwriteMode::AddFiles,
+            3 => RepoCheckoutOverwriteMode::UnionIdentical,
+            value => RepoCheckoutOverwriteMode::__Unknown(value),
+        }
+    }
+}
+
+#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
+#[derive(Clone, Copy)]
+pub enum RepoMode {
+    Bare,
+    Archive,
+    BareUser,
+    BareUserOnly,
+    #[doc(hidden)]
+    __Unknown(i32),
+}
+
+#[doc(hidden)]
+impl ToGlib for RepoMode {
+    type GlibType = ffi::OstreeRepoMode;
+
+    fn to_glib(&self) -> ffi::OstreeRepoMode {
+        match *self {
+            RepoMode::Bare => ffi::OSTREE_REPO_MODE_BARE,
+            RepoMode::Archive => ffi::OSTREE_REPO_MODE_ARCHIVE,
+            RepoMode::BareUser => ffi::OSTREE_REPO_MODE_BARE_USER,
+            RepoMode::BareUserOnly => ffi::OSTREE_REPO_MODE_BARE_USER_ONLY,
+            RepoMode::__Unknown(value) => value
+        }
+    }
+}
+
+#[doc(hidden)]
+impl FromGlib<ffi::OstreeRepoMode> for RepoMode {
+    fn from_glib(value: ffi::OstreeRepoMode) -> Self {
+        match value {
+            0 => RepoMode::Bare,
+            1 => RepoMode::Archive,
+            2 => RepoMode::BareUser,
+            3 => RepoMode::BareUserOnly,
+            value => RepoMode::__Unknown(value),
+        }
+    }
+}
+
+#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
+#[derive(Clone, Copy)]
+pub enum RepoPruneFlags {
+    None,
+    NoPrune,
+    RefsOnly,
+    #[doc(hidden)]
+    __Unknown(i32),
+}
+
+#[doc(hidden)]
+impl ToGlib for RepoPruneFlags {
+    type GlibType = ffi::OstreeRepoPruneFlags;
+
+    fn to_glib(&self) -> ffi::OstreeRepoPruneFlags {
+        match *self {
+            RepoPruneFlags::None => ffi::OSTREE_REPO_PRUNE_FLAGS_NONE,
+            RepoPruneFlags::NoPrune => ffi::OSTREE_REPO_PRUNE_FLAGS_NO_PRUNE,
+            RepoPruneFlags::RefsOnly => ffi::OSTREE_REPO_PRUNE_FLAGS_REFS_ONLY,
+            RepoPruneFlags::__Unknown(value) => value
+        }
+    }
+}
+
+#[doc(hidden)]
+impl FromGlib<ffi::OstreeRepoPruneFlags> for RepoPruneFlags {
+    fn from_glib(value: ffi::OstreeRepoPruneFlags) -> Self {
+        match value {
+            0 => RepoPruneFlags::None,
+            1 => RepoPruneFlags::NoPrune,
+            2 => RepoPruneFlags::RefsOnly,
+            value => RepoPruneFlags::__Unknown(value),
+        }
+    }
+}
+
+#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
+#[derive(Clone, Copy)]
+pub enum RepoRemoteChange {
+    Add,
+    AddIfNotExists,
+    Delete,
+    DeleteIfExists,
+    #[doc(hidden)]
+    __Unknown(i32),
+}
+
+#[doc(hidden)]
+impl ToGlib for RepoRemoteChange {
+    type GlibType = ffi::OstreeRepoRemoteChange;
+
+    fn to_glib(&self) -> ffi::OstreeRepoRemoteChange {
+        match *self {
+            RepoRemoteChange::Add => ffi::OSTREE_REPO_REMOTE_CHANGE_ADD,
+            RepoRemoteChange::AddIfNotExists => ffi::OSTREE_REPO_REMOTE_CHANGE_ADD_IF_NOT_EXISTS,
+            RepoRemoteChange::Delete => ffi::OSTREE_REPO_REMOTE_CHANGE_DELETE,
+            RepoRemoteChange::DeleteIfExists => ffi::OSTREE_REPO_REMOTE_CHANGE_DELETE_IF_EXISTS,
+            RepoRemoteChange::__Unknown(value) => value
+        }
+    }
+}
+
+#[doc(hidden)]
+impl FromGlib<ffi::OstreeRepoRemoteChange> for RepoRemoteChange {
+    fn from_glib(value: ffi::OstreeRepoRemoteChange) -> Self {
+        match value {
+            0 => RepoRemoteChange::Add,
+            1 => RepoRemoteChange::AddIfNotExists,
+            2 => RepoRemoteChange::Delete,
+            3 => RepoRemoteChange::DeleteIfExists,
+            value => RepoRemoteChange::__Unknown(value),
+        }
+    }
+}
+
+#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
+#[derive(Clone, Copy)]
+pub enum RepoResolveRevExtFlags {
+    RepoResolveRevExtNone,
+    #[doc(hidden)]
+    __Unknown(i32),
+}
+
+#[doc(hidden)]
+impl ToGlib for RepoResolveRevExtFlags {
+    type GlibType = ffi::OstreeRepoResolveRevExtFlags;
+
+    fn to_glib(&self) -> ffi::OstreeRepoResolveRevExtFlags {
+        match *self {
+            RepoResolveRevExtFlags::RepoResolveRevExtNone => ffi::OSTREE_REPO_RESOLVE_REV_EXT_NONE,
+            RepoResolveRevExtFlags::__Unknown(value) => value
+        }
+    }
+}
+
+#[doc(hidden)]
+impl FromGlib<ffi::OstreeRepoResolveRevExtFlags> for RepoResolveRevExtFlags {
+    fn from_glib(value: ffi::OstreeRepoResolveRevExtFlags) -> Self {
+        match value {
+            0 => RepoResolveRevExtFlags::RepoResolveRevExtNone,
+            value => RepoResolveRevExtFlags::__Unknown(value),
+        }
+    }
+}
+
+#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
+#[derive(Clone, Copy)]
+pub enum StaticDeltaGenerateOpt {
+    Lowlatency,
+    Major,
+    #[doc(hidden)]
+    __Unknown(i32),
+}
+
+#[doc(hidden)]
+impl ToGlib for StaticDeltaGenerateOpt {
+    type GlibType = ffi::OstreeStaticDeltaGenerateOpt;
+
+    fn to_glib(&self) -> ffi::OstreeStaticDeltaGenerateOpt {
+        match *self {
+            StaticDeltaGenerateOpt::Lowlatency => ffi::OSTREE_STATIC_DELTA_GENERATE_OPT_LOWLATENCY,
+            StaticDeltaGenerateOpt::Major => ffi::OSTREE_STATIC_DELTA_GENERATE_OPT_MAJOR,
+            StaticDeltaGenerateOpt::__Unknown(value) => value
+        }
+    }
+}
+
+#[doc(hidden)]
+impl FromGlib<ffi::OstreeStaticDeltaGenerateOpt> for StaticDeltaGenerateOpt {
+    fn from_glib(value: ffi::OstreeStaticDeltaGenerateOpt) -> Self {
+        match value {
+            0 => StaticDeltaGenerateOpt::Lowlatency,
+            1 => StaticDeltaGenerateOpt::Major,
+            value => StaticDeltaGenerateOpt::__Unknown(value),
+        }
+    }
+}
+
diff --git a/rust-bindings/rust/src/auto/flags.rs b/rust-bindings/rust/src/auto/flags.rs
new file mode 100644 (file)
index 0000000..6e820f4
--- /dev/null
@@ -0,0 +1,108 @@
+// This file was generated by gir (https://github.com/gtk-rs/gir @ ffda6f9)
+// from gir-files (https://github.com/gtk-rs/gir-files @ ???)
+// DO NOT EDIT
+
+use ffi;
+use glib::translate::*;
+
+#[cfg(any(feature = "v2015_7", feature = "dox"))]
+bitflags! {
+    pub struct RepoCommitState: u32 {
+        const NORMAL = 0;
+        const PARTIAL = 1;
+    }
+}
+
+#[cfg(any(feature = "v2015_7", feature = "dox"))]
+#[doc(hidden)]
+impl ToGlib for RepoCommitState {
+    type GlibType = ffi::OstreeRepoCommitState;
+
+    fn to_glib(&self) -> ffi::OstreeRepoCommitState {
+        self.bits()
+    }
+}
+
+#[cfg(any(feature = "v2015_7", feature = "dox"))]
+#[doc(hidden)]
+impl FromGlib<ffi::OstreeRepoCommitState> for RepoCommitState {
+    fn from_glib(value: ffi::OstreeRepoCommitState) -> RepoCommitState {
+        RepoCommitState::from_bits_truncate(value)
+    }
+}
+
+bitflags! {
+    pub struct RepoListRefsExtFlags: u32 {
+        const NONE = 0;
+        const ALIASES = 1;
+        const EXCLUDE_REMOTES = 2;
+    }
+}
+
+#[doc(hidden)]
+impl ToGlib for RepoListRefsExtFlags {
+    type GlibType = ffi::OstreeRepoListRefsExtFlags;
+
+    fn to_glib(&self) -> ffi::OstreeRepoListRefsExtFlags {
+        self.bits()
+    }
+}
+
+#[doc(hidden)]
+impl FromGlib<ffi::OstreeRepoListRefsExtFlags> for RepoListRefsExtFlags {
+    fn from_glib(value: ffi::OstreeRepoListRefsExtFlags) -> RepoListRefsExtFlags {
+        RepoListRefsExtFlags::from_bits_truncate(value)
+    }
+}
+
+bitflags! {
+    pub struct RepoPullFlags: u32 {
+        const NONE = 0;
+        const MIRROR = 1;
+        const COMMIT_ONLY = 2;
+        const UNTRUSTED = 4;
+        const BAREUSERONLY_FILES = 8;
+        const TRUSTED_HTTP = 16;
+    }
+}
+
+#[doc(hidden)]
+impl ToGlib for RepoPullFlags {
+    type GlibType = ffi::OstreeRepoPullFlags;
+
+    fn to_glib(&self) -> ffi::OstreeRepoPullFlags {
+        self.bits()
+    }
+}
+
+#[doc(hidden)]
+impl FromGlib<ffi::OstreeRepoPullFlags> for RepoPullFlags {
+    fn from_glib(value: ffi::OstreeRepoPullFlags) -> RepoPullFlags {
+        RepoPullFlags::from_bits_truncate(value)
+    }
+}
+
+bitflags! {
+    pub struct SePolicyRestoreconFlags: u32 {
+        const NONE = 0;
+        const ALLOW_NOLABEL = 1;
+        const KEEP_EXISTING = 2;
+    }
+}
+
+#[doc(hidden)]
+impl ToGlib for SePolicyRestoreconFlags {
+    type GlibType = ffi::OstreeSePolicyRestoreconFlags;
+
+    fn to_glib(&self) -> ffi::OstreeSePolicyRestoreconFlags {
+        self.bits()
+    }
+}
+
+#[doc(hidden)]
+impl FromGlib<ffi::OstreeSePolicyRestoreconFlags> for SePolicyRestoreconFlags {
+    fn from_glib(value: ffi::OstreeSePolicyRestoreconFlags) -> SePolicyRestoreconFlags {
+        SePolicyRestoreconFlags::from_bits_truncate(value)
+    }
+}
+
diff --git a/rust-bindings/rust/src/auto/functions.rs b/rust-bindings/rust/src/auto/functions.rs
new file mode 100644 (file)
index 0000000..df0af99
--- /dev/null
@@ -0,0 +1,376 @@
+// This file was generated by gir (https://github.com/gtk-rs/gir @ ffda6f9)
+// from gir-files (https://github.com/gtk-rs/gir-files @ ???)
+// DO NOT EDIT
+
+use Error;
+use ObjectType;
+use ffi;
+use gio;
+use glib;
+use glib::object::IsA;
+use glib::translate::*;
+use std::mem;
+use std::ptr;
+
+
+#[cfg(any(feature = "v2017_15", feature = "dox"))]
+pub fn break_hardlink<'a, P: Into<Option<&'a gio::Cancellable>>>(dfd: i32, path: &str, skip_xattrs: bool, cancellable: P) -> Result<(), Error> {
+    let cancellable = cancellable.into();
+    let cancellable = cancellable.to_glib_none();
+    unsafe {
+        let mut error = ptr::null_mut();
+        let _ = ffi::ostree_break_hardlink(dfd, path.to_glib_none().0, skip_xattrs.to_glib(), cancellable.0, &mut error);
+        if error.is_null() { Ok(()) } else { Err(from_glib_full(error)) }
+    }
+}
+
+pub fn check_version(required_year: u32, required_release: u32) -> bool {
+    unsafe {
+        from_glib(ffi::ostree_check_version(required_year, required_release))
+    }
+}
+
+//pub fn checksum_b64_from_bytes(csum: /*Unknown conversion*//*Unimplemented*/FixedArray TypeId { ns_id: 0, id: 3 }; 32) -> Option<String> {
+//    unsafe { TODO: call ffi::ostree_checksum_b64_from_bytes() }
+//}
+
+//pub fn checksum_b64_inplace_from_bytes(csum: /*Unknown conversion*//*Unimplemented*/FixedArray TypeId { ns_id: 0, id: 3 }; 32, buf: &str) {
+//    unsafe { TODO: call ffi::ostree_checksum_b64_inplace_from_bytes() }
+//}
+
+//pub fn checksum_b64_inplace_to_bytes(checksum: /*Unknown conversion*//*Unimplemented*/FixedArray TypeId { ns_id: 0, id: 28 }; 32, buf: u8) {
+//    unsafe { TODO: call ffi::ostree_checksum_b64_inplace_to_bytes() }
+//}
+
+//pub fn checksum_b64_to_bytes(checksum: &str) -> /*Unknown conversion*//*Unimplemented*/FixedArray TypeId { ns_id: 0, id: 3 }; 32 {
+//    unsafe { TODO: call ffi::ostree_checksum_b64_to_bytes() }
+//}
+
+//pub fn checksum_bytes_peek(bytes: &glib::Variant) -> /*Unknown conversion*//*Unimplemented*/FixedArray TypeId { ns_id: 0, id: 3 }; 32 {
+//    unsafe { TODO: call ffi::ostree_checksum_bytes_peek() }
+//}
+
+//pub fn checksum_bytes_peek_validate(bytes: &glib::Variant) -> Result</*Unknown conversion*//*Unimplemented*/FixedArray TypeId { ns_id: 0, id: 3 }; 32, Error> {
+//    unsafe { TODO: call ffi::ostree_checksum_bytes_peek_validate() }
+//}
+
+//pub fn checksum_file<'a, P: IsA<gio::File>, Q: Into<Option<&'a gio::Cancellable>>>(f: &P, objtype: ObjectType, out_csum: /*Unknown conversion*//*Unimplemented*/FixedArray TypeId { ns_id: 0, id: 3 }; 32, cancellable: Q) -> Result<(), Error> {
+//    unsafe { TODO: call ffi::ostree_checksum_file() }
+//}
+
+//pub fn checksum_file_async<'a, P: IsA<gio::File>, Q: Into<Option<&'a gio::Cancellable>>, R: /*Ignored*/gio::AsyncReadyCallback>(f: &P, objtype: ObjectType, io_priority: i32, cancellable: Q, callback: R) {
+//    unsafe { TODO: call ffi::ostree_checksum_file_async() }
+//}
+
+//#[cfg(any(feature = "v2017_13", feature = "dox"))]
+//pub fn checksum_file_at<'a, P: Into<Option</*Unimplemented*/Fundamental: Pointer>>, Q: Into<Option<&'a gio::Cancellable>>>(dfd: i32, path: &str, stbuf: P, objtype: ObjectType, flags: /*Ignored*/ChecksumFlags, out_checksum: &str, cancellable: Q) -> Result<(), Error> {
+//    unsafe { TODO: call ffi::ostree_checksum_file_at() }
+//}
+
+//pub fn checksum_file_from_input<'a, 'b, 'c, P: Into<Option<&'a glib::Variant>>, Q: IsA<gio::InputStream> + 'b, R: Into<Option<&'b Q>>, S: Into<Option<&'c gio::Cancellable>>>(file_info: &gio::FileInfo, xattrs: P, in_: R, objtype: ObjectType, out_csum: /*Unknown conversion*//*Unimplemented*/FixedArray TypeId { ns_id: 0, id: 3 }; 32, cancellable: S) -> Result<(), Error> {
+//    unsafe { TODO: call ffi::ostree_checksum_file_from_input() }
+//}
+
+//pub fn checksum_from_bytes(csum: /*Unknown conversion*//*Unimplemented*/FixedArray TypeId { ns_id: 0, id: 3 }; 32) -> Option<String> {
+//    unsafe { TODO: call ffi::ostree_checksum_from_bytes() }
+//}
+
+pub fn checksum_from_bytes_v(csum_v: &glib::Variant) -> Option<String> {
+    unsafe {
+        from_glib_full(ffi::ostree_checksum_from_bytes_v(csum_v.to_glib_none().0))
+    }
+}
+
+//pub fn checksum_inplace_from_bytes(csum: /*Unknown conversion*//*Unimplemented*/FixedArray TypeId { ns_id: 0, id: 3 }; 32, buf: &str) {
+//    unsafe { TODO: call ffi::ostree_checksum_inplace_from_bytes() }
+//}
+
+//pub fn checksum_to_bytes(checksum: &str) -> /*Unknown conversion*//*Unimplemented*/FixedArray TypeId { ns_id: 0, id: 3 }; 32 {
+//    unsafe { TODO: call ffi::ostree_checksum_to_bytes() }
+//}
+
+pub fn checksum_to_bytes_v(checksum: &str) -> Option<glib::Variant> {
+    unsafe {
+        from_glib_full(ffi::ostree_checksum_to_bytes_v(checksum.to_glib_none().0))
+    }
+}
+
+//pub fn cmd__private__() -> /*Ignored*/Option<CmdPrivateVTable> {
+//    unsafe { TODO: call ffi::ostree_cmd__private__() }
+//}
+
+pub fn commit_get_content_checksum(commit_variant: &glib::Variant) -> Option<String> {
+    unsafe {
+        from_glib_full(ffi::ostree_commit_get_content_checksum(commit_variant.to_glib_none().0))
+    }
+}
+
+pub fn commit_get_parent(commit_variant: &glib::Variant) -> Option<String> {
+    unsafe {
+        from_glib_full(ffi::ostree_commit_get_parent(commit_variant.to_glib_none().0))
+    }
+}
+
+pub fn commit_get_timestamp(commit_variant: &glib::Variant) -> u64 {
+    unsafe {
+        ffi::ostree_commit_get_timestamp(commit_variant.to_glib_none().0)
+    }
+}
+
+pub fn content_file_parse<'a, P: IsA<gio::File>, Q: Into<Option<&'a gio::Cancellable>>>(compressed: bool, content_path: &P, trusted: bool, cancellable: Q) -> Result<(gio::InputStream, gio::FileInfo, glib::Variant), Error> {
+    let cancellable = cancellable.into();
+    let cancellable = cancellable.to_glib_none();
+    unsafe {
+        let mut out_input = ptr::null_mut();
+        let mut out_file_info = ptr::null_mut();
+        let mut out_xattrs = ptr::null_mut();
+        let mut error = ptr::null_mut();
+        let _ = ffi::ostree_content_file_parse(compressed.to_glib(), content_path.to_glib_none().0, trusted.to_glib(), &mut out_input, &mut out_file_info, &mut out_xattrs, cancellable.0, &mut error);
+        if error.is_null() { Ok((from_glib_full(out_input), from_glib_full(out_file_info), from_glib_full(out_xattrs))) } else { Err(from_glib_full(error)) }
+    }
+}
+
+pub fn content_file_parse_at<'a, P: Into<Option<&'a gio::Cancellable>>>(compressed: bool, parent_dfd: i32, path: &str, trusted: bool, cancellable: P) -> Result<(gio::InputStream, gio::FileInfo, glib::Variant), Error> {
+    let cancellable = cancellable.into();
+    let cancellable = cancellable.to_glib_none();
+    unsafe {
+        let mut out_input = ptr::null_mut();
+        let mut out_file_info = ptr::null_mut();
+        let mut out_xattrs = ptr::null_mut();
+        let mut error = ptr::null_mut();
+        let _ = ffi::ostree_content_file_parse_at(compressed.to_glib(), parent_dfd, path.to_glib_none().0, trusted.to_glib(), &mut out_input, &mut out_file_info, &mut out_xattrs, cancellable.0, &mut error);
+        if error.is_null() { Ok((from_glib_full(out_input), from_glib_full(out_file_info), from_glib_full(out_xattrs))) } else { Err(from_glib_full(error)) }
+    }
+}
+
+pub fn content_stream_parse<'a, P: IsA<gio::InputStream>, Q: Into<Option<&'a gio::Cancellable>>>(compressed: bool, input: &P, input_length: u64, trusted: bool, cancellable: Q) -> Result<(gio::InputStream, gio::FileInfo, glib::Variant), Error> {
+    let cancellable = cancellable.into();
+    let cancellable = cancellable.to_glib_none();
+    unsafe {
+        let mut out_input = ptr::null_mut();
+        let mut out_file_info = ptr::null_mut();
+        let mut out_xattrs = ptr::null_mut();
+        let mut error = ptr::null_mut();
+        let _ = ffi::ostree_content_stream_parse(compressed.to_glib(), input.to_glib_none().0, input_length, trusted.to_glib(), &mut out_input, &mut out_file_info, &mut out_xattrs, cancellable.0, &mut error);
+        if error.is_null() { Ok((from_glib_full(out_input), from_glib_full(out_file_info), from_glib_full(out_xattrs))) } else { Err(from_glib_full(error)) }
+    }
+}
+
+pub fn create_directory_metadata<'a, P: Into<Option<&'a glib::Variant>>>(dir_info: &gio::FileInfo, xattrs: P) -> Option<glib::Variant> {
+    let xattrs = xattrs.into();
+    let xattrs = xattrs.to_glib_none();
+    unsafe {
+        from_glib_full(ffi::ostree_create_directory_metadata(dir_info.to_glib_none().0, xattrs.0))
+    }
+}
+
+//pub fn diff_dirs<'a, P: IsA<gio::File>, Q: IsA<gio::File>, R: Into<Option<&'a gio::Cancellable>>>(flags: /*Ignored*/DiffFlags, a: &P, b: &Q, modified: /*Unknown conversion*//*Unimplemented*/PtrArray TypeId { ns_id: 1, id: 24 }, removed: /*Unknown conversion*//*Unimplemented*/PtrArray TypeId { ns_id: 4, id: 15 }, added: /*Unknown conversion*//*Unimplemented*/PtrArray TypeId { ns_id: 4, id: 15 }, cancellable: R) -> Result<(), Error> {
+//    unsafe { TODO: call ffi::ostree_diff_dirs() }
+//}
+
+//pub fn diff_dirs_with_options<'a, 'b, P: IsA<gio::File>, Q: IsA<gio::File>, R: Into<Option<&'a /*Ignored*/DiffDirsOptions>>, S: Into<Option<&'b gio::Cancellable>>>(flags: /*Ignored*/DiffFlags, a: &P, b: &Q, modified: /*Unknown conversion*//*Unimplemented*/PtrArray TypeId { ns_id: 1, id: 24 }, removed: /*Unknown conversion*//*Unimplemented*/PtrArray TypeId { ns_id: 4, id: 15 }, added: /*Unknown conversion*//*Unimplemented*/PtrArray TypeId { ns_id: 4, id: 15 }, options: R, cancellable: S) -> Result<(), Error> {
+//    unsafe { TODO: call ffi::ostree_diff_dirs_with_options() }
+//}
+
+//pub fn diff_print<P: IsA<gio::File>, Q: IsA<gio::File>>(a: &P, b: &Q, modified: /*Unknown conversion*//*Unimplemented*/PtrArray TypeId { ns_id: 1, id: 24 }, removed: /*Unknown conversion*//*Unimplemented*/PtrArray TypeId { ns_id: 4, id: 15 }, added: /*Unknown conversion*//*Unimplemented*/PtrArray TypeId { ns_id: 4, id: 15 }) {
+//    unsafe { TODO: call ffi::ostree_diff_print() }
+//}
+
+//pub fn gpg_error_quark() -> /*Ignored*/glib::Quark {
+//    unsafe { TODO: call ffi::ostree_gpg_error_quark() }
+//}
+
+//pub fn hash_object_name<P: Into<Option</*Unimplemented*/Fundamental: Pointer>>>(a: P) -> u32 {
+//    unsafe { TODO: call ffi::ostree_hash_object_name() }
+//}
+
+//pub fn metadata_variant_type(objtype: ObjectType) -> /*Ignored*/Option<glib::VariantType> {
+//    unsafe { TODO: call ffi::ostree_metadata_variant_type() }
+//}
+
+pub fn object_from_string(str: &str) -> (String, ObjectType) {
+    unsafe {
+        let mut out_checksum = ptr::null_mut();
+        let mut out_objtype = mem::uninitialized();
+        ffi::ostree_object_from_string(str.to_glib_none().0, &mut out_checksum, &mut out_objtype);
+        (from_glib_full(out_checksum), from_glib(out_objtype))
+    }
+}
+
+pub fn object_name_deserialize(variant: &glib::Variant) -> (String, ObjectType) {
+    unsafe {
+        let mut out_checksum = ptr::null();
+        let mut out_objtype = mem::uninitialized();
+        ffi::ostree_object_name_deserialize(variant.to_glib_none().0, &mut out_checksum, &mut out_objtype);
+        (from_glib_none(out_checksum), from_glib(out_objtype))
+    }
+}
+
+pub fn object_name_serialize(checksum: &str, objtype: ObjectType) -> Option<glib::Variant> {
+    unsafe {
+        from_glib_none(ffi::ostree_object_name_serialize(checksum.to_glib_none().0, objtype.to_glib()))
+    }
+}
+
+pub fn object_to_string(checksum: &str, objtype: ObjectType) -> Option<String> {
+    unsafe {
+        from_glib_full(ffi::ostree_object_to_string(checksum.to_glib_none().0, objtype.to_glib()))
+    }
+}
+
+pub fn object_type_from_string(str: &str) -> ObjectType {
+    unsafe {
+        from_glib(ffi::ostree_object_type_from_string(str.to_glib_none().0))
+    }
+}
+
+pub fn object_type_to_string(objtype: ObjectType) -> Option<String> {
+    unsafe {
+        from_glib_none(ffi::ostree_object_type_to_string(objtype.to_glib()))
+    }
+}
+
+pub fn parse_refspec(refspec: &str) -> Result<(Option<String>, String), Error> {
+    unsafe {
+        let mut out_remote = ptr::null_mut();
+        let mut out_ref = ptr::null_mut();
+        let mut error = ptr::null_mut();
+        let _ = ffi::ostree_parse_refspec(refspec.to_glib_none().0, &mut out_remote, &mut out_ref, &mut error);
+        if error.is_null() { Ok((from_glib_full(out_remote), from_glib_full(out_ref))) } else { Err(from_glib_full(error)) }
+    }
+}
+
+pub fn raw_file_to_archive_z2_stream<'a, 'b, P: IsA<gio::InputStream>, Q: Into<Option<&'a glib::Variant>>, R: Into<Option<&'b gio::Cancellable>>>(input: &P, file_info: &gio::FileInfo, xattrs: Q, cancellable: R) -> Result<gio::InputStream, Error> {
+    let xattrs = xattrs.into();
+    let xattrs = xattrs.to_glib_none();
+    let cancellable = cancellable.into();
+    let cancellable = cancellable.to_glib_none();
+    unsafe {
+        let mut out_input = ptr::null_mut();
+        let mut error = ptr::null_mut();
+        let _ = ffi::ostree_raw_file_to_archive_z2_stream(input.to_glib_none().0, file_info.to_glib_none().0, xattrs.0, &mut out_input, cancellable.0, &mut error);
+        if error.is_null() { Ok(from_glib_full(out_input)) } else { Err(from_glib_full(error)) }
+    }
+}
+
+#[cfg(any(feature = "v2017_3", feature = "dox"))]
+pub fn raw_file_to_archive_z2_stream_with_options<'a, 'b, 'c, P: IsA<gio::InputStream>, Q: Into<Option<&'a glib::Variant>>, R: Into<Option<&'b glib::Variant>>, S: Into<Option<&'c gio::Cancellable>>>(input: &P, file_info: &gio::FileInfo, xattrs: Q, options: R, cancellable: S) -> Result<gio::InputStream, Error> {
+    let xattrs = xattrs.into();
+    let xattrs = xattrs.to_glib_none();
+    let options = options.into();
+    let options = options.to_glib_none();
+    let cancellable = cancellable.into();
+    let cancellable = cancellable.to_glib_none();
+    unsafe {
+        let mut out_input = ptr::null_mut();
+        let mut error = ptr::null_mut();
+        let _ = ffi::ostree_raw_file_to_archive_z2_stream_with_options(input.to_glib_none().0, file_info.to_glib_none().0, xattrs.0, options.0, &mut out_input, cancellable.0, &mut error);
+        if error.is_null() { Ok(from_glib_full(out_input)) } else { Err(from_glib_full(error)) }
+    }
+}
+
+pub fn raw_file_to_content_stream<'a, 'b, P: IsA<gio::InputStream>, Q: Into<Option<&'a glib::Variant>>, R: Into<Option<&'b gio::Cancellable>>>(input: &P, file_info: &gio::FileInfo, xattrs: Q, cancellable: R) -> Result<(gio::InputStream, u64), Error> {
+    let xattrs = xattrs.into();
+    let xattrs = xattrs.to_glib_none();
+    let cancellable = cancellable.into();
+    let cancellable = cancellable.to_glib_none();
+    unsafe {
+        let mut out_input = ptr::null_mut();
+        let mut out_length = mem::uninitialized();
+        let mut error = ptr::null_mut();
+        let _ = ffi::ostree_raw_file_to_content_stream(input.to_glib_none().0, file_info.to_glib_none().0, xattrs.0, &mut out_input, &mut out_length, cancellable.0, &mut error);
+        if error.is_null() { Ok((from_glib_full(out_input), out_length)) } else { Err(from_glib_full(error)) }
+    }
+}
+
+pub fn validate_checksum_string(sha256: &str) -> Result<(), Error> {
+    unsafe {
+        let mut error = ptr::null_mut();
+        let _ = ffi::ostree_validate_checksum_string(sha256.to_glib_none().0, &mut error);
+        if error.is_null() { Ok(()) } else { Err(from_glib_full(error)) }
+    }
+}
+
+#[cfg(any(feature = "v2018_6", feature = "dox"))]
+pub fn validate_collection_id<'a, P: Into<Option<&'a str>>>(collection_id: P) -> Result<(), Error> {
+    let collection_id = collection_id.into();
+    let collection_id = collection_id.to_glib_none();
+    unsafe {
+        let mut error = ptr::null_mut();
+        let _ = ffi::ostree_validate_collection_id(collection_id.0, &mut error);
+        if error.is_null() { Ok(()) } else { Err(from_glib_full(error)) }
+    }
+}
+
+#[cfg(any(feature = "v2017_8", feature = "dox"))]
+pub fn validate_remote_name(remote_name: &str) -> Result<(), Error> {
+    unsafe {
+        let mut error = ptr::null_mut();
+        let _ = ffi::ostree_validate_remote_name(remote_name.to_glib_none().0, &mut error);
+        if error.is_null() { Ok(()) } else { Err(from_glib_full(error)) }
+    }
+}
+
+pub fn validate_rev(rev: &str) -> Result<(), Error> {
+    unsafe {
+        let mut error = ptr::null_mut();
+        let _ = ffi::ostree_validate_rev(rev.to_glib_none().0, &mut error);
+        if error.is_null() { Ok(()) } else { Err(from_glib_full(error)) }
+    }
+}
+
+pub fn validate_structureof_checksum_string(checksum: &str) -> Result<(), Error> {
+    unsafe {
+        let mut error = ptr::null_mut();
+        let _ = ffi::ostree_validate_structureof_checksum_string(checksum.to_glib_none().0, &mut error);
+        if error.is_null() { Ok(()) } else { Err(from_glib_full(error)) }
+    }
+}
+
+pub fn validate_structureof_commit(commit: &glib::Variant) -> Result<(), Error> {
+    unsafe {
+        let mut error = ptr::null_mut();
+        let _ = ffi::ostree_validate_structureof_commit(commit.to_glib_none().0, &mut error);
+        if error.is_null() { Ok(()) } else { Err(from_glib_full(error)) }
+    }
+}
+
+pub fn validate_structureof_csum_v(checksum: &glib::Variant) -> Result<(), Error> {
+    unsafe {
+        let mut error = ptr::null_mut();
+        let _ = ffi::ostree_validate_structureof_csum_v(checksum.to_glib_none().0, &mut error);
+        if error.is_null() { Ok(()) } else { Err(from_glib_full(error)) }
+    }
+}
+
+pub fn validate_structureof_dirmeta(dirmeta: &glib::Variant) -> Result<(), Error> {
+    unsafe {
+        let mut error = ptr::null_mut();
+        let _ = ffi::ostree_validate_structureof_dirmeta(dirmeta.to_glib_none().0, &mut error);
+        if error.is_null() { Ok(()) } else { Err(from_glib_full(error)) }
+    }
+}
+
+pub fn validate_structureof_dirtree(dirtree: &glib::Variant) -> Result<(), Error> {
+    unsafe {
+        let mut error = ptr::null_mut();
+        let _ = ffi::ostree_validate_structureof_dirtree(dirtree.to_glib_none().0, &mut error);
+        if error.is_null() { Ok(()) } else { Err(from_glib_full(error)) }
+    }
+}
+
+pub fn validate_structureof_file_mode(mode: u32) -> Result<(), Error> {
+    unsafe {
+        let mut error = ptr::null_mut();
+        let _ = ffi::ostree_validate_structureof_file_mode(mode, &mut error);
+        if error.is_null() { Ok(()) } else { Err(from_glib_full(error)) }
+    }
+}
+
+pub fn validate_structureof_objtype(objtype: u8) -> Result<(), Error> {
+    unsafe {
+        let mut error = ptr::null_mut();
+        let _ = ffi::ostree_validate_structureof_objtype(objtype, &mut error);
+        if error.is_null() { Ok(()) } else { Err(from_glib_full(error)) }
+    }
+}
diff --git a/rust-bindings/rust/src/auto/gpg_verify_result.rs b/rust-bindings/rust/src/auto/gpg_verify_result.rs
new file mode 100644 (file)
index 0000000..ec3e07c
--- /dev/null
@@ -0,0 +1,96 @@
+// This file was generated by gir (https://github.com/gtk-rs/gir @ ffda6f9)
+// from gir-files (https://github.com/gtk-rs/gir-files @ ???)
+// DO NOT EDIT
+
+use Error;
+use GpgSignatureFormatFlags;
+use ffi;
+use glib;
+use glib::object::IsA;
+use glib::translate::*;
+use glib_ffi;
+use gobject_ffi;
+use std::mem;
+use std::ptr;
+
+glib_wrapper! {
+    pub struct GpgVerifyResult(Object<ffi::OstreeGpgVerifyResult>);
+
+    match fn {
+        get_type => || ffi::ostree_gpg_verify_result_get_type(),
+    }
+}
+
+impl GpgVerifyResult {
+    pub fn describe_variant<'a, P: Into<Option<&'a str>>>(variant: &glib::Variant, output_buffer: &mut glib::String, line_prefix: P, flags: GpgSignatureFormatFlags) {
+        let line_prefix = line_prefix.into();
+        let line_prefix = line_prefix.to_glib_none();
+        unsafe {
+            ffi::ostree_gpg_verify_result_describe_variant(variant.to_glib_none().0, output_buffer.to_glib_none_mut().0, line_prefix.0, flags.to_glib());
+        }
+    }
+}
+
+pub trait GpgVerifyResultExt {
+    fn count_all(&self) -> u32;
+
+    fn count_valid(&self) -> u32;
+
+    fn describe<'a, P: Into<Option<&'a str>>>(&self, signature_index: u32, output_buffer: &mut glib::String, line_prefix: P, flags: GpgSignatureFormatFlags);
+
+    //fn get(&self, signature_index: u32, attrs: /*Unimplemented*/&CArray TypeId { ns_id: 1, id: 26 }) -> Option<glib::Variant>;
+
+    fn get_all(&self, signature_index: u32) -> Option<glib::Variant>;
+
+    fn lookup(&self, key_id: &str) -> Option<u32>;
+
+    fn require_valid_signature(&self) -> Result<(), Error>;
+}
+
+impl<O: IsA<GpgVerifyResult>> GpgVerifyResultExt for O {
+    fn count_all(&self) -> u32 {
+        unsafe {
+            ffi::ostree_gpg_verify_result_count_all(self.to_glib_none().0)
+        }
+    }
+
+    fn count_valid(&self) -> u32 {
+        unsafe {
+            ffi::ostree_gpg_verify_result_count_valid(self.to_glib_none().0)
+        }
+    }
+
+    fn describe<'a, P: Into<Option<&'a str>>>(&self, signature_index: u32, output_buffer: &mut glib::String, line_prefix: P, flags: GpgSignatureFormatFlags) {
+        let line_prefix = line_prefix.into();
+        let line_prefix = line_prefix.to_glib_none();
+        unsafe {
+            ffi::ostree_gpg_verify_result_describe(self.to_glib_none().0, signature_index, output_buffer.to_glib_none_mut().0, line_prefix.0, flags.to_glib());
+        }
+    }
+
+    //fn get(&self, signature_index: u32, attrs: /*Unimplemented*/&CArray TypeId { ns_id: 1, id: 26 }) -> Option<glib::Variant> {
+    //    unsafe { TODO: call ffi::ostree_gpg_verify_result_get() }
+    //}
+
+    fn get_all(&self, signature_index: u32) -> Option<glib::Variant> {
+        unsafe {
+            from_glib_full(ffi::ostree_gpg_verify_result_get_all(self.to_glib_none().0, signature_index))
+        }
+    }
+
+    fn lookup(&self, key_id: &str) -> Option<u32> {
+        unsafe {
+            let mut out_signature_index = mem::uninitialized();
+            let ret = from_glib(ffi::ostree_gpg_verify_result_lookup(self.to_glib_none().0, key_id.to_glib_none().0, &mut out_signature_index));
+            if ret { Some(out_signature_index) } else { None }
+        }
+    }
+
+    fn require_valid_signature(&self) -> Result<(), Error> {
+        unsafe {
+            let mut error = ptr::null_mut();
+            let _ = ffi::ostree_gpg_verify_result_require_valid_signature(self.to_glib_none().0, &mut error);
+            if error.is_null() { Ok(()) } else { Err(from_glib_full(error)) }
+        }
+    }
+}
diff --git a/rust-bindings/rust/src/auto/mod.rs b/rust-bindings/rust/src/auto/mod.rs
new file mode 100644 (file)
index 0000000..59aaea8
--- /dev/null
@@ -0,0 +1,102 @@
+// This file was generated by gir (https://github.com/gtk-rs/gir @ ffda6f9)
+// from gir-files (https://github.com/gtk-rs/gir-files @ ???)
+// DO NOT EDIT
+
+mod async_progress;
+pub use self::async_progress::AsyncProgress;
+pub use self::async_progress::AsyncProgressExt;
+
+mod gpg_verify_result;
+pub use self::gpg_verify_result::GpgVerifyResult;
+pub use self::gpg_verify_result::GpgVerifyResultExt;
+
+mod mutable_tree;
+pub use self::mutable_tree::MutableTree;
+pub use self::mutable_tree::MutableTreeExt;
+
+mod repo;
+pub use self::repo::Repo;
+pub use self::repo::RepoExt;
+
+mod repo_file;
+pub use self::repo_file::RepoFile;
+pub use self::repo_file::RepoFileExt;
+
+mod se_policy;
+pub use self::se_policy::SePolicy;
+pub use self::se_policy::SePolicyExt;
+
+#[cfg(any(feature = "v2018_6", feature = "dox"))]
+mod collection_ref;
+#[cfg(any(feature = "v2018_6", feature = "dox"))]
+pub use self::collection_ref::CollectionRef;
+
+#[cfg(any(feature = "v2018_6", feature = "dox"))]
+mod remote;
+#[cfg(any(feature = "v2018_6", feature = "dox"))]
+pub use self::remote::Remote;
+
+mod repo_commit_modifier;
+pub use self::repo_commit_modifier::RepoCommitModifier;
+
+mod repo_dev_ino_cache;
+pub use self::repo_dev_ino_cache::RepoDevInoCache;
+
+mod repo_transaction_stats;
+pub use self::repo_transaction_stats::RepoTransactionStats;
+
+mod enums;
+pub use self::enums::GpgSignatureFormatFlags;
+pub use self::enums::ObjectType;
+pub use self::enums::RepoCheckoutMode;
+pub use self::enums::RepoCheckoutOverwriteMode;
+pub use self::enums::RepoMode;
+pub use self::enums::RepoPruneFlags;
+pub use self::enums::RepoRemoteChange;
+pub use self::enums::RepoResolveRevExtFlags;
+pub use self::enums::StaticDeltaGenerateOpt;
+
+mod flags;
+#[cfg(any(feature = "v2015_7", feature = "dox"))]
+pub use self::flags::RepoCommitState;
+pub use self::flags::RepoListRefsExtFlags;
+pub use self::flags::RepoPullFlags;
+pub use self::flags::SePolicyRestoreconFlags;
+
+pub mod functions;
+
+mod constants;
+pub use self::constants::COMMIT_GVARIANT_STRING;
+#[cfg(any(feature = "v2018_6", feature = "dox"))]
+pub use self::constants::COMMIT_META_KEY_COLLECTION_BINDING;
+#[cfg(any(feature = "v2017_7", feature = "dox"))]
+pub use self::constants::COMMIT_META_KEY_ENDOFLIFE;
+#[cfg(any(feature = "v2017_7", feature = "dox"))]
+pub use self::constants::COMMIT_META_KEY_ENDOFLIFE_REBASE;
+#[cfg(any(feature = "v2017_9", feature = "dox"))]
+pub use self::constants::COMMIT_META_KEY_REF_BINDING;
+#[cfg(any(feature = "v2017_13", feature = "dox"))]
+pub use self::constants::COMMIT_META_KEY_SOURCE_TITLE;
+#[cfg(any(feature = "v2014_9", feature = "dox"))]
+pub use self::constants::COMMIT_META_KEY_VERSION;
+pub use self::constants::DIRMETA_GVARIANT_STRING;
+pub use self::constants::FILEMETA_GVARIANT_STRING;
+#[cfg(any(feature = "v2018_3", feature = "dox"))]
+pub use self::constants::ORIGIN_TRANSIENT_GROUP;
+#[cfg(any(feature = "v2018_6", feature = "dox"))]
+pub use self::constants::REPO_METADATA_REF;
+pub use self::constants::SUMMARY_GVARIANT_STRING;
+pub use self::constants::SUMMARY_SIG_GVARIANT_STRING;
+pub use self::constants::TREE_GVARIANT_STRING;
+#[cfg(any(feature = "v2017_4", feature = "dox"))]
+pub use self::constants::VERSION_S;
+
+#[doc(hidden)]
+pub mod traits {
+    pub use super::AsyncProgressExt;
+    pub use super::GpgVerifyResultExt;
+    pub use super::MutableTreeExt;
+    pub use super::RepoExt;
+    pub use super::RepoFileExt;
+    pub use super::SePolicyExt;
+}
diff --git a/rust-bindings/rust/src/auto/mutable_tree.rs b/rust-bindings/rust/src/auto/mutable_tree.rs
new file mode 100644 (file)
index 0000000..3e6cb5e
--- /dev/null
@@ -0,0 +1,142 @@
+// This file was generated by gir (https://github.com/gtk-rs/gir @ ffda6f9)
+// from gir-files (https://github.com/gtk-rs/gir-files @ ???)
+// DO NOT EDIT
+
+use Error;
+use Repo;
+use ffi;
+use glib::object::IsA;
+use glib::translate::*;
+use glib_ffi;
+use gobject_ffi;
+use std::mem;
+use std::ptr;
+
+glib_wrapper! {
+    pub struct MutableTree(Object<ffi::OstreeMutableTree, ffi::OstreeMutableTreeClass>);
+
+    match fn {
+        get_type => || ffi::ostree_mutable_tree_get_type(),
+    }
+}
+
+impl MutableTree {
+    pub fn new() -> MutableTree {
+        unsafe {
+            from_glib_full(ffi::ostree_mutable_tree_new())
+        }
+    }
+
+    pub fn new_from_checksum(repo: &Repo, contents_checksum: &str, metadata_checksum: &str) -> MutableTree {
+        unsafe {
+            from_glib_full(ffi::ostree_mutable_tree_new_from_checksum(repo.to_glib_none().0, contents_checksum.to_glib_none().0, metadata_checksum.to_glib_none().0))
+        }
+    }
+}
+
+impl Default for MutableTree {
+    fn default() -> Self {
+        Self::new()
+    }
+}
+
+pub trait MutableTreeExt {
+    #[cfg(any(feature = "v2018_7", feature = "dox"))]
+    fn check_error(&self) -> Result<(), Error>;
+
+    fn ensure_dir(&self, name: &str) -> Result<MutableTree, Error>;
+
+    //fn ensure_parent_dirs(&self, split_path: /*Unknown conversion*//*Unimplemented*/PtrArray TypeId { ns_id: 0, id: 28 }, metadata_checksum: &str) -> Result<MutableTree, Error>;
+
+    fn fill_empty_from_dirtree(&self, repo: &Repo, contents_checksum: &str, metadata_checksum: &str) -> bool;
+
+    fn get_contents_checksum(&self) -> Option<String>;
+
+    //fn get_files(&self) -> /*Unknown conversion*//*Unimplemented*/HashTable TypeId { ns_id: 0, id: 28 }/TypeId { ns_id: 0, id: 28 };
+
+    fn get_metadata_checksum(&self) -> Option<String>;
+
+    //fn get_subdirs(&self) -> /*Unknown conversion*//*Unimplemented*/HashTable TypeId { ns_id: 0, id: 28 }/TypeId { ns_id: 1, id: 37 };
+
+    fn replace_file(&self, name: &str, checksum: &str) -> Result<(), Error>;
+
+    fn set_contents_checksum(&self, checksum: &str);
+
+    fn set_metadata_checksum(&self, checksum: &str);
+
+    //fn walk(&self, split_path: /*Unknown conversion*//*Unimplemented*/PtrArray TypeId { ns_id: 0, id: 28 }, start: u32) -> Result<MutableTree, Error>;
+}
+
+impl<O: IsA<MutableTree>> MutableTreeExt for O {
+    #[cfg(any(feature = "v2018_7", feature = "dox"))]
+    fn check_error(&self) -> Result<(), Error> {
+        unsafe {
+            let mut error = ptr::null_mut();
+            let _ = ffi::ostree_mutable_tree_check_error(self.to_glib_none().0, &mut error);
+            if error.is_null() { Ok(()) } else { Err(from_glib_full(error)) }
+        }
+    }
+
+    fn ensure_dir(&self, name: &str) -> Result<MutableTree, Error> {
+        unsafe {
+            let mut out_subdir = ptr::null_mut();
+            let mut error = ptr::null_mut();
+            let _ = ffi::ostree_mutable_tree_ensure_dir(self.to_glib_none().0, name.to_glib_none().0, &mut out_subdir, &mut error);
+            if error.is_null() { Ok(from_glib_full(out_subdir)) } else { Err(from_glib_full(error)) }
+        }
+    }
+
+    //fn ensure_parent_dirs(&self, split_path: /*Unknown conversion*//*Unimplemented*/PtrArray TypeId { ns_id: 0, id: 28 }, metadata_checksum: &str) -> Result<MutableTree, Error> {
+    //    unsafe { TODO: call ffi::ostree_mutable_tree_ensure_parent_dirs() }
+    //}
+
+    fn fill_empty_from_dirtree(&self, repo: &Repo, contents_checksum: &str, metadata_checksum: &str) -> bool {
+        unsafe {
+            from_glib(ffi::ostree_mutable_tree_fill_empty_from_dirtree(self.to_glib_none().0, repo.to_glib_none().0, contents_checksum.to_glib_none().0, metadata_checksum.to_glib_none().0))
+        }
+    }
+
+    fn get_contents_checksum(&self) -> Option<String> {
+        unsafe {
+            from_glib_none(ffi::ostree_mutable_tree_get_contents_checksum(self.to_glib_none().0))
+        }
+    }
+
+    //fn get_files(&self) -> /*Unknown conversion*//*Unimplemented*/HashTable TypeId { ns_id: 0, id: 28 }/TypeId { ns_id: 0, id: 28 } {
+    //    unsafe { TODO: call ffi::ostree_mutable_tree_get_files() }
+    //}
+
+    fn get_metadata_checksum(&self) -> Option<String> {
+        unsafe {
+            from_glib_none(ffi::ostree_mutable_tree_get_metadata_checksum(self.to_glib_none().0))
+        }
+    }
+
+    //fn get_subdirs(&self) -> /*Unknown conversion*//*Unimplemented*/HashTable TypeId { ns_id: 0, id: 28 }/TypeId { ns_id: 1, id: 37 } {
+    //    unsafe { TODO: call ffi::ostree_mutable_tree_get_subdirs() }
+    //}
+
+    fn replace_file(&self, name: &str, checksum: &str) -> Result<(), Error> {
+        unsafe {
+            let mut error = ptr::null_mut();
+            let _ = ffi::ostree_mutable_tree_replace_file(self.to_glib_none().0, name.to_glib_none().0, checksum.to_glib_none().0, &mut error);
+            if error.is_null() { Ok(()) } else { Err(from_glib_full(error)) }
+        }
+    }
+
+    fn set_contents_checksum(&self, checksum: &str) {
+        unsafe {
+            ffi::ostree_mutable_tree_set_contents_checksum(self.to_glib_none().0, checksum.to_glib_none().0);
+        }
+    }
+
+    fn set_metadata_checksum(&self, checksum: &str) {
+        unsafe {
+            ffi::ostree_mutable_tree_set_metadata_checksum(self.to_glib_none().0, checksum.to_glib_none().0);
+        }
+    }
+
+    //fn walk(&self, split_path: /*Unknown conversion*//*Unimplemented*/PtrArray TypeId { ns_id: 0, id: 28 }, start: u32) -> Result<MutableTree, Error> {
+    //    unsafe { TODO: call ffi::ostree_mutable_tree_walk() }
+    //}
+}
diff --git a/rust-bindings/rust/src/auto/remote.rs b/rust-bindings/rust/src/auto/remote.rs
new file mode 100644 (file)
index 0000000..520f1ce
--- /dev/null
@@ -0,0 +1,37 @@
+// This file was generated by gir (https://github.com/gtk-rs/gir @ ffda6f9)
+// from gir-files (https://github.com/gtk-rs/gir-files @ ???)
+// DO NOT EDIT
+
+use ffi;
+use glib::translate::*;
+use glib_ffi;
+use gobject_ffi;
+use std::mem;
+use std::ptr;
+
+glib_wrapper! {
+    #[derive(Debug, PartialEq, Eq, PartialOrd, Ord, Hash)]
+    pub struct Remote(Shared<ffi::OstreeRemote>);
+
+    match fn {
+        ref => |ptr| ffi::ostree_remote_ref(ptr),
+        unref => |ptr| ffi::ostree_remote_unref(ptr),
+        get_type => || ffi::ostree_remote_get_type(),
+    }
+}
+
+impl Remote {
+    #[cfg(any(feature = "v2018_6", feature = "dox"))]
+    pub fn get_name(&self) -> Option<String> {
+        unsafe {
+            from_glib_none(ffi::ostree_remote_get_name(self.to_glib_none().0))
+        }
+    }
+
+    #[cfg(any(feature = "v2018_6", feature = "dox"))]
+    pub fn get_url(&self) -> Option<String> {
+        unsafe {
+            from_glib_full(ffi::ostree_remote_get_url(self.to_glib_none().0))
+        }
+    }
+}
diff --git a/rust-bindings/rust/src/auto/repo.rs b/rust-bindings/rust/src/auto/repo.rs
new file mode 100644 (file)
index 0000000..d7bdd3d
--- /dev/null
@@ -0,0 +1,1378 @@
+// This file was generated by gir (https://github.com/gtk-rs/gir @ ffda6f9)
+// from gir-files (https://github.com/gtk-rs/gir-files @ ???)
+// DO NOT EDIT
+
+use AsyncProgress;
+#[cfg(any(feature = "v2018_6", feature = "dox"))]
+use CollectionRef;
+use Error;
+use GpgVerifyResult;
+use MutableTree;
+use ObjectType;
+#[cfg(any(feature = "v2018_6", feature = "dox"))]
+use Remote;
+use RepoCheckoutMode;
+use RepoCheckoutOverwriteMode;
+use RepoCommitModifier;
+#[cfg(any(feature = "v2015_7", feature = "dox"))]
+use RepoCommitState;
+use RepoFile;
+use RepoMode;
+use RepoPruneFlags;
+use RepoPullFlags;
+use RepoRemoteChange;
+use RepoResolveRevExtFlags;
+use RepoTransactionStats;
+use StaticDeltaGenerateOpt;
+use ffi;
+use gio;
+use glib;
+use glib::StaticType;
+use glib::Value;
+use glib::object::Downcast;
+use glib::object::IsA;
+use glib::signal::SignalHandlerId;
+use glib::signal::connect;
+use glib::translate::*;
+use glib_ffi;
+use gobject_ffi;
+use libc;
+use std::boxed::Box as Box_;
+use std::mem;
+use std::mem::transmute;
+use std::ptr;
+
+glib_wrapper! {
+    pub struct Repo(Object<ffi::OstreeRepo>);
+
+    match fn {
+        get_type => || ffi::ostree_repo_get_type(),
+    }
+}
+
+impl Repo {
+    pub fn new<P: IsA<gio::File>>(path: &P) -> Repo {
+        unsafe {
+            from_glib_full(ffi::ostree_repo_new(path.to_glib_none().0))
+        }
+    }
+
+    pub fn new_default() -> Repo {
+        unsafe {
+            from_glib_full(ffi::ostree_repo_new_default())
+        }
+    }
+
+    pub fn new_for_sysroot_path<P: IsA<gio::File>, Q: IsA<gio::File>>(repo_path: &P, sysroot_path: &Q) -> Repo {
+        unsafe {
+            from_glib_full(ffi::ostree_repo_new_for_sysroot_path(repo_path.to_glib_none().0, sysroot_path.to_glib_none().0))
+        }
+    }
+
+    pub fn create_at<'a, P: Into<Option<&'a gio::Cancellable>>>(dfd: i32, path: &str, mode: RepoMode, options: &glib::Variant, cancellable: P) -> Result<Repo, Error> {
+        let cancellable = cancellable.into();
+        let cancellable = cancellable.to_glib_none();
+        unsafe {
+            let mut error = ptr::null_mut();
+            let ret = ffi::ostree_repo_create_at(dfd, path.to_glib_none().0, mode.to_glib(), options.to_glib_none().0, cancellable.0, &mut error);
+            if error.is_null() { Ok(from_glib_full(ret)) } else { Err(from_glib_full(error)) }
+        }
+    }
+
+    pub fn open_at<'a, P: Into<Option<&'a gio::Cancellable>>>(dfd: i32, path: &str, cancellable: P) -> Result<Repo, Error> {
+        let cancellable = cancellable.into();
+        let cancellable = cancellable.to_glib_none();
+        unsafe {
+            let mut error = ptr::null_mut();
+            let ret = ffi::ostree_repo_open_at(dfd, path.to_glib_none().0, cancellable.0, &mut error);
+            if error.is_null() { Ok(from_glib_full(ret)) } else { Err(from_glib_full(error)) }
+        }
+    }
+
+    //pub fn pull_default_console_progress_changed<P: Into<Option</*Unimplemented*/Fundamental: Pointer>>>(progress: &AsyncProgress, user_data: P) {
+    //    unsafe { TODO: call ffi::ostree_repo_pull_default_console_progress_changed() }
+    //}
+
+    //#[cfg(any(feature = "v2018_5", feature = "dox"))]
+    //pub fn traverse_new_parents() -> /*Unknown conversion*//*Unimplemented*/HashTable TypeId { ns_id: 2, id: 181 }/TypeId { ns_id: 2, id: 181 } {
+    //    unsafe { TODO: call ffi::ostree_repo_traverse_new_parents() }
+    //}
+
+    //pub fn traverse_new_reachable() -> /*Unknown conversion*//*Unimplemented*/HashTable TypeId { ns_id: 2, id: 181 }/TypeId { ns_id: 2, id: 181 } {
+    //    unsafe { TODO: call ffi::ostree_repo_traverse_new_reachable() }
+    //}
+
+    //#[cfg(any(feature = "v2018_5", feature = "dox"))]
+    //pub fn traverse_parents_get_commits(parents: /*Unknown conversion*//*Unimplemented*/HashTable TypeId { ns_id: 0, id: 25 }/TypeId { ns_id: 0, id: 25 }, object: &glib::Variant) -> Vec<String> {
+    //    unsafe { TODO: call ffi::ostree_repo_traverse_parents_get_commits() }
+    //}
+}
+
+pub trait RepoExt {
+    fn abort_transaction<'a, P: Into<Option<&'a gio::Cancellable>>>(&self, cancellable: P) -> Result<(), Error>;
+
+    fn add_gpg_signature_summary<'a, 'b, P: Into<Option<&'a str>>, Q: Into<Option<&'b gio::Cancellable>>>(&self, key_id: &[&str], homedir: P, cancellable: Q) -> Result<(), Error>;
+
+    fn append_gpg_signature<'a, P: Into<Option<&'a gio::Cancellable>>>(&self, commit_checksum: &str, signature_bytes: &glib::Bytes, cancellable: P) -> Result<(), Error>;
+
+    //fn checkout_at<'a, 'b, P: Into<Option<&'a /*Ignored*/RepoCheckoutAtOptions>>, Q: Into<Option<&'b gio::Cancellable>>>(&self, options: P, destination_dfd: i32, destination_path: &str, commit: &str, cancellable: Q) -> Result<(), Error>;
+
+    fn checkout_gc<'a, P: Into<Option<&'a gio::Cancellable>>>(&self, cancellable: P) -> Result<(), Error>;
+
+    fn checkout_tree<'a, P: IsA<gio::File>, Q: Into<Option<&'a gio::Cancellable>>>(&self, mode: RepoCheckoutMode, overwrite_mode: RepoCheckoutOverwriteMode, destination: &P, source: &RepoFile, source_info: &gio::FileInfo, cancellable: Q) -> Result<(), Error>;
+
+    //fn checkout_tree_at<'a, 'b, P: Into<Option<&'a /*Ignored*/RepoCheckoutOptions>>, Q: Into<Option<&'b gio::Cancellable>>>(&self, options: P, destination_dfd: i32, destination_path: &str, commit: &str, cancellable: Q) -> Result<(), Error>;
+
+    fn commit_transaction<'a, P: Into<Option<&'a gio::Cancellable>>>(&self, cancellable: P) -> Result<RepoTransactionStats, Error>;
+
+    fn copy_config(&self) -> Option<glib::KeyFile>;
+
+    fn create<'a, P: Into<Option<&'a gio::Cancellable>>>(&self, mode: RepoMode, cancellable: P) -> Result<(), Error>;
+
+    fn delete_object<'a, P: Into<Option<&'a gio::Cancellable>>>(&self, objtype: ObjectType, sha256: &str, cancellable: P) -> Result<(), Error>;
+
+    #[cfg(any(feature = "v2017_12", feature = "dox"))]
+    fn equal(&self, b: &Repo) -> bool;
+
+    //fn export_tree_to_archive<'a, P: Into<Option</*Unimplemented*/Fundamental: Pointer>>, Q: Into<Option<&'a gio::Cancellable>>>(&self, opts: /*Ignored*/&mut RepoExportArchiveOptions, root: &RepoFile, archive: P, cancellable: Q) -> Result<(), Error>;
+
+    #[cfg(any(feature = "v2017_15", feature = "dox"))]
+    fn fsck_object<'a, P: Into<Option<&'a gio::Cancellable>>>(&self, objtype: ObjectType, sha256: &str, cancellable: P) -> Result<(), Error>;
+
+    #[cfg(any(feature = "v2018_6", feature = "dox"))]
+    fn get_collection_id(&self) -> Option<String>;
+
+    fn get_config(&self) -> Option<glib::KeyFile>;
+
+    fn get_dfd(&self) -> i32;
+
+    fn get_disable_fsync(&self) -> bool;
+
+    fn get_mode(&self) -> RepoMode;
+
+    fn get_parent(&self) -> Option<Repo>;
+
+    fn get_path(&self) -> Option<gio::File>;
+
+    fn get_remote_boolean_option(&self, remote_name: &str, option_name: &str, default_value: bool) -> Result<bool, Error>;
+
+    fn get_remote_list_option(&self, remote_name: &str, option_name: &str) -> Result<Vec<String>, Error>;
+
+    fn get_remote_option<'a, P: Into<Option<&'a str>>>(&self, remote_name: &str, option_name: &str, default_value: P) -> Result<String, Error>;
+
+    fn gpg_verify_data<'a, 'b, 'c, 'd, P: Into<Option<&'a str>>, Q: IsA<gio::File> + 'b, R: Into<Option<&'b Q>>, S: IsA<gio::File> + 'c, T: Into<Option<&'c S>>, U: Into<Option<&'d gio::Cancellable>>>(&self, remote_name: P, data: &glib::Bytes, signatures: &glib::Bytes, keyringdir: R, extra_keyring: T, cancellable: U) -> Result<GpgVerifyResult, Error>;
+
+    fn has_object<'a, P: Into<Option<&'a gio::Cancellable>>>(&self, objtype: ObjectType, checksum: &str, cancellable: P) -> Result<bool, Error>;
+
+    #[cfg(any(feature = "v2017_12", feature = "dox"))]
+    fn hash(&self) -> u32;
+
+    //fn import_archive_to_mtree<'a, 'b, P: Into<Option</*Unimplemented*/Fundamental: Pointer>>, Q: Into<Option<&'a RepoCommitModifier>>, R: Into<Option<&'b gio::Cancellable>>>(&self, opts: /*Ignored*/&mut RepoImportArchiveOptions, archive: P, mtree: &MutableTree, modifier: Q, cancellable: R) -> Result<(), Error>;
+
+    fn import_object_from<'a, P: Into<Option<&'a gio::Cancellable>>>(&self, source: &Repo, objtype: ObjectType, checksum: &str, cancellable: P) -> Result<(), Error>;
+
+    fn import_object_from_with_trust<'a, P: Into<Option<&'a gio::Cancellable>>>(&self, source: &Repo, objtype: ObjectType, checksum: &str, trusted: bool, cancellable: P) -> Result<(), Error>;
+
+    fn is_system(&self) -> bool;
+
+    fn is_writable(&self) -> Result<(), Error>;
+
+    //#[cfg(any(feature = "v2018_6", feature = "dox"))]
+    //fn list_collection_refs<'a, 'b, P: Into<Option<&'a str>>, Q: Into<Option<&'b gio::Cancellable>>>(&self, match_collection_id: P, out_all_refs: /*Unknown conversion*//*Unimplemented*/HashTable TypeId { ns_id: 1, id: 0 }/TypeId { ns_id: 0, id: 28 }, flags: RepoListRefsExtFlags, cancellable: Q) -> Result<(), Error>;
+
+    //fn list_commit_objects_starting_with<'a, P: Into<Option<&'a gio::Cancellable>>>(&self, start: &str, out_commits: /*Unknown conversion*//*Unimplemented*/HashTable TypeId { ns_id: 2, id: 181 }/TypeId { ns_id: 2, id: 181 }, cancellable: P) -> Result<(), Error>;
+
+    //fn list_objects<'a, P: Into<Option<&'a gio::Cancellable>>>(&self, flags: /*Ignored*/RepoListObjectsFlags, out_objects: /*Unknown conversion*//*Unimplemented*/HashTable TypeId { ns_id: 2, id: 181 }/TypeId { ns_id: 2, id: 181 }, cancellable: P) -> Result<(), Error>;
+
+    //fn list_refs<'a, 'b, P: Into<Option<&'a str>>, Q: Into<Option<&'b gio::Cancellable>>>(&self, refspec_prefix: P, out_all_refs: /*Unknown conversion*//*Unimplemented*/HashTable TypeId { ns_id: 0, id: 28 }/TypeId { ns_id: 0, id: 28 }, cancellable: Q) -> Result<(), Error>;
+
+    //fn list_refs_ext<'a, 'b, P: Into<Option<&'a str>>, Q: Into<Option<&'b gio::Cancellable>>>(&self, refspec_prefix: P, out_all_refs: /*Unknown conversion*//*Unimplemented*/HashTable TypeId { ns_id: 0, id: 28 }/TypeId { ns_id: 0, id: 28 }, flags: RepoListRefsExtFlags, cancellable: Q) -> Result<(), Error>;
+
+    //fn list_static_delta_names<'a, P: Into<Option<&'a gio::Cancellable>>>(&self, out_deltas: /*Unknown conversion*//*Unimplemented*/PtrArray TypeId { ns_id: 0, id: 28 }, cancellable: P) -> Result<(), Error>;
+
+    #[cfg(any(feature = "v2015_7", feature = "dox"))]
+    fn load_commit(&self, checksum: &str) -> Result<(glib::Variant, RepoCommitState), Error>;
+
+    fn load_file<'a, P: Into<Option<&'a gio::Cancellable>>>(&self, checksum: &str, cancellable: P) -> Result<(Option<gio::InputStream>, Option<gio::FileInfo>, Option<glib::Variant>), Error>;
+
+    fn load_object_stream<'a, P: Into<Option<&'a gio::Cancellable>>>(&self, objtype: ObjectType, checksum: &str, cancellable: P) -> Result<(gio::InputStream, u64), Error>;
+
+    fn load_variant(&self, objtype: ObjectType, sha256: &str) -> Result<glib::Variant, Error>;
+
+    fn load_variant_if_exists(&self, objtype: ObjectType, sha256: &str) -> Result<glib::Variant, Error>;
+
+    #[cfg(any(feature = "v2017_15", feature = "dox"))]
+    fn mark_commit_partial(&self, checksum: &str, is_partial: bool) -> Result<(), Error>;
+
+    fn open<'a, P: Into<Option<&'a gio::Cancellable>>>(&self, cancellable: P) -> Result<(), Error>;
+
+    fn prepare_transaction<'a, P: Into<Option<&'a gio::Cancellable>>>(&self, cancellable: P) -> Result<bool, Error>;
+
+    fn prune<'a, P: Into<Option<&'a gio::Cancellable>>>(&self, flags: RepoPruneFlags, depth: i32, cancellable: P) -> Result<(i32, i32, u64), Error>;
+
+    //fn prune_from_reachable<'a, P: Into<Option<&'a gio::Cancellable>>>(&self, options: /*Ignored*/&mut RepoPruneOptions, cancellable: P) -> Result<(i32, i32, u64), Error>;
+
+    fn prune_static_deltas<'a, 'b, P: Into<Option<&'a str>>, Q: Into<Option<&'b gio::Cancellable>>>(&self, commit: P, cancellable: Q) -> Result<(), Error>;
+
+    fn pull<'a, 'b, P: Into<Option<&'a AsyncProgress>>, Q: Into<Option<&'b gio::Cancellable>>>(&self, remote_name: &str, refs_to_fetch: &[&str], flags: RepoPullFlags, progress: P, cancellable: Q) -> Result<(), Error>;
+
+    fn pull_one_dir<'a, 'b, P: Into<Option<&'a AsyncProgress>>, Q: Into<Option<&'b gio::Cancellable>>>(&self, remote_name: &str, dir_to_pull: &str, refs_to_fetch: &[&str], flags: RepoPullFlags, progress: P, cancellable: Q) -> Result<(), Error>;
+
+    fn pull_with_options<'a, 'b, P: Into<Option<&'a AsyncProgress>>, Q: Into<Option<&'b gio::Cancellable>>>(&self, remote_name_or_baseurl: &str, options: &glib::Variant, progress: P, cancellable: Q) -> Result<(), Error>;
+
+    fn query_object_storage_size<'a, P: Into<Option<&'a gio::Cancellable>>>(&self, objtype: ObjectType, sha256: &str, cancellable: P) -> Result<u64, Error>;
+
+    fn read_commit<'a, P: Into<Option<&'a gio::Cancellable>>>(&self, ref_: &str, cancellable: P) -> Result<(gio::File, String), Error>;
+
+    fn read_commit_detached_metadata<'a, P: Into<Option<&'a gio::Cancellable>>>(&self, checksum: &str, cancellable: P) -> Result<glib::Variant, Error>;
+
+    fn regenerate_summary<'a, 'b, P: Into<Option<&'a glib::Variant>>, Q: Into<Option<&'b gio::Cancellable>>>(&self, additional_metadata: P, cancellable: Q) -> Result<(), Error>;
+
+    fn reload_config<'a, P: Into<Option<&'a gio::Cancellable>>>(&self, cancellable: P) -> Result<(), Error>;
+
+    fn remote_add<'a, 'b, P: Into<Option<&'a glib::Variant>>, Q: Into<Option<&'b gio::Cancellable>>>(&self, name: &str, url: &str, options: P, cancellable: Q) -> Result<(), Error>;
+
+    fn remote_change<'a, 'b, 'c, P: IsA<gio::File> + 'a, Q: Into<Option<&'a P>>, R: Into<Option<&'b glib::Variant>>, S: Into<Option<&'c gio::Cancellable>>>(&self, sysroot: Q, changeop: RepoRemoteChange, name: &str, url: &str, options: R, cancellable: S) -> Result<(), Error>;
+
+    fn remote_delete<'a, P: Into<Option<&'a gio::Cancellable>>>(&self, name: &str, cancellable: P) -> Result<(), Error>;
+
+    fn remote_fetch_summary<'a, P: Into<Option<&'a gio::Cancellable>>>(&self, name: &str, cancellable: P) -> Result<(glib::Bytes, glib::Bytes), Error>;
+
+    fn remote_fetch_summary_with_options<'a, 'b, P: Into<Option<&'a glib::Variant>>, Q: Into<Option<&'b gio::Cancellable>>>(&self, name: &str, options: P, cancellable: Q) -> Result<(glib::Bytes, glib::Bytes), Error>;
+
+    fn remote_get_gpg_verify(&self, name: &str) -> Result<bool, Error>;
+
+    fn remote_get_gpg_verify_summary(&self, name: &str) -> Result<bool, Error>;
+
+    fn remote_get_url(&self, name: &str) -> Result<String, Error>;
+
+    fn remote_list(&self) -> Vec<String>;
+
+    //#[cfg(any(feature = "v2018_6", feature = "dox"))]
+    //fn remote_list_collection_refs<'a, P: Into<Option<&'a gio::Cancellable>>>(&self, remote_name: &str, out_all_refs: /*Unknown conversion*//*Unimplemented*/HashTable TypeId { ns_id: 1, id: 0 }/TypeId { ns_id: 0, id: 28 }, cancellable: P) -> Result<(), Error>;
+
+    //fn remote_list_refs<'a, P: Into<Option<&'a gio::Cancellable>>>(&self, remote_name: &str, out_all_refs: /*Unknown conversion*//*Unimplemented*/HashTable TypeId { ns_id: 0, id: 28 }/TypeId { ns_id: 0, id: 28 }, cancellable: P) -> Result<(), Error>;
+
+    #[cfg(any(feature = "v2018_6", feature = "dox"))]
+    fn resolve_collection_ref<'a, P: Into<Option<&'a gio::Cancellable>>>(&self, ref_: &CollectionRef, allow_noent: bool, flags: RepoResolveRevExtFlags, cancellable: P) -> Result<Option<String>, Error>;
+
+    #[cfg(any(feature = "v2018_6", feature = "dox"))]
+    fn resolve_keyring_for_collection<'a, P: Into<Option<&'a gio::Cancellable>>>(&self, collection_id: &str, cancellable: P) -> Result<Remote, Error>;
+
+    fn resolve_rev(&self, refspec: &str, allow_noent: bool) -> Result<String, Error>;
+
+    fn resolve_rev_ext(&self, refspec: &str, allow_noent: bool, flags: RepoResolveRevExtFlags) -> Result<String, Error>;
+
+    fn scan_hardlinks<'a, P: Into<Option<&'a gio::Cancellable>>>(&self, cancellable: P) -> Result<(), Error>;
+
+    fn set_alias_ref_immediate<'a, 'b, 'c, P: Into<Option<&'a str>>, Q: Into<Option<&'b str>>, R: Into<Option<&'c gio::Cancellable>>>(&self, remote: P, ref_: &str, target: Q, cancellable: R) -> Result<(), Error>;
+
+    fn set_cache_dir<'a, P: Into<Option<&'a gio::Cancellable>>>(&self, dfd: i32, path: &str, cancellable: P) -> Result<(), Error>;
+
+    #[cfg(any(feature = "v2018_6", feature = "dox"))]
+    fn set_collection_id<'a, P: Into<Option<&'a str>>>(&self, collection_id: P) -> Result<(), Error>;
+
+    #[cfg(any(feature = "v2018_6", feature = "dox"))]
+    fn set_collection_ref_immediate<'a, 'b, P: Into<Option<&'a str>>, Q: Into<Option<&'b gio::Cancellable>>>(&self, ref_: &CollectionRef, checksum: P, cancellable: Q) -> Result<(), Error>;
+
+    fn set_disable_fsync(&self, disable_fsync: bool);
+
+    fn set_ref_immediate<'a, 'b, 'c, P: Into<Option<&'a str>>, Q: Into<Option<&'b str>>, R: Into<Option<&'c gio::Cancellable>>>(&self, remote: P, ref_: &str, checksum: Q, cancellable: R) -> Result<(), Error>;
+
+    fn sign_commit<'a, 'b, P: Into<Option<&'a str>>, Q: Into<Option<&'b gio::Cancellable>>>(&self, commit_checksum: &str, key_id: &str, homedir: P, cancellable: Q) -> Result<(), Error>;
+
+    fn sign_delta<'a, P: Into<Option<&'a gio::Cancellable>>>(&self, from_commit: &str, to_commit: &str, key_id: &str, homedir: &str, cancellable: P) -> Result<(), Error>;
+
+    fn static_delta_execute_offline<'a, P: IsA<gio::File>, Q: Into<Option<&'a gio::Cancellable>>>(&self, dir_or_file: &P, skip_validation: bool, cancellable: Q) -> Result<(), Error>;
+
+    fn static_delta_generate<'a, 'b, 'c, P: Into<Option<&'a glib::Variant>>, Q: Into<Option<&'b glib::Variant>>, R: Into<Option<&'c gio::Cancellable>>>(&self, opt: StaticDeltaGenerateOpt, from: &str, to: &str, metadata: P, params: Q, cancellable: R) -> Result<(), Error>;
+
+    #[cfg(any(feature = "v2018_6", feature = "dox"))]
+    fn transaction_set_collection_ref<'a, P: Into<Option<&'a str>>>(&self, ref_: &CollectionRef, checksum: P);
+
+    fn transaction_set_ref<'a, 'b, P: Into<Option<&'a str>>, Q: Into<Option<&'b str>>>(&self, remote: P, ref_: &str, checksum: Q);
+
+    fn transaction_set_refspec<'a, P: Into<Option<&'a str>>>(&self, refspec: &str, checksum: P);
+
+    //fn traverse_commit<'a, P: Into<Option<&'a gio::Cancellable>>>(&self, commit_checksum: &str, maxdepth: i32, out_reachable: /*Unknown conversion*//*Unimplemented*/HashTable TypeId { ns_id: 2, id: 181 }/TypeId { ns_id: 2, id: 181 }, cancellable: P) -> Result<(), Error>;
+
+    //fn traverse_commit_union<'a, P: Into<Option<&'a gio::Cancellable>>>(&self, commit_checksum: &str, maxdepth: i32, inout_reachable: /*Unknown conversion*//*Unimplemented*/HashTable TypeId { ns_id: 0, id: 25 }/TypeId { ns_id: 0, id: 25 }, cancellable: P) -> Result<(), Error>;
+
+    //#[cfg(any(feature = "v2018_5", feature = "dox"))]
+    //fn traverse_commit_union_with_parents<'a, P: Into<Option<&'a gio::Cancellable>>>(&self, commit_checksum: &str, maxdepth: i32, inout_reachable: /*Unknown conversion*//*Unimplemented*/HashTable TypeId { ns_id: 0, id: 25 }/TypeId { ns_id: 0, id: 25 }, inout_parents: /*Unknown conversion*//*Unimplemented*/HashTable TypeId { ns_id: 0, id: 25 }/TypeId { ns_id: 0, id: 25 }, cancellable: P) -> Result<(), Error>;
+
+    //#[cfg(any(feature = "v2018_6", feature = "dox"))]
+    //fn traverse_reachable_refs<'a, P: Into<Option<&'a gio::Cancellable>>>(&self, depth: u32, reachable: /*Unknown conversion*//*Unimplemented*/HashTable TypeId { ns_id: 2, id: 181 }/TypeId { ns_id: 2, id: 181 }, cancellable: P) -> Result<(), Error>;
+
+    fn verify_commit<'a, 'b, 'c, P: IsA<gio::File> + 'a, Q: Into<Option<&'a P>>, R: IsA<gio::File> + 'b, S: Into<Option<&'b R>>, T: Into<Option<&'c gio::Cancellable>>>(&self, commit_checksum: &str, keyringdir: Q, extra_keyring: S, cancellable: T) -> Result<(), Error>;
+
+    fn verify_commit_ext<'a, 'b, 'c, P: IsA<gio::File> + 'a, Q: Into<Option<&'a P>>, R: IsA<gio::File> + 'b, S: Into<Option<&'b R>>, T: Into<Option<&'c gio::Cancellable>>>(&self, commit_checksum: &str, keyringdir: Q, extra_keyring: S, cancellable: T) -> Result<GpgVerifyResult, Error>;
+
+    fn verify_commit_for_remote<'a, P: Into<Option<&'a gio::Cancellable>>>(&self, commit_checksum: &str, remote_name: &str, cancellable: P) -> Result<GpgVerifyResult, Error>;
+
+    fn verify_summary<'a, P: Into<Option<&'a gio::Cancellable>>>(&self, remote_name: &str, summary: &glib::Bytes, signatures: &glib::Bytes, cancellable: P) -> Result<GpgVerifyResult, Error>;
+
+    fn write_archive_to_mtree<'a, 'b, P: IsA<gio::File>, Q: Into<Option<&'a RepoCommitModifier>>, R: Into<Option<&'b gio::Cancellable>>>(&self, archive: &P, mtree: &MutableTree, modifier: Q, autocreate_parents: bool, cancellable: R) -> Result<(), Error>;
+
+    fn write_commit<'a, 'b, 'c, 'd, 'e, P: Into<Option<&'a str>>, Q: Into<Option<&'b str>>, R: Into<Option<&'c str>>, S: Into<Option<&'d glib::Variant>>, T: Into<Option<&'e gio::Cancellable>>>(&self, parent: P, subject: Q, body: R, metadata: S, root: &RepoFile, cancellable: T) -> Result<String, Error>;
+
+    fn write_commit_detached_metadata<'a, 'b, P: Into<Option<&'a glib::Variant>>, Q: Into<Option<&'b gio::Cancellable>>>(&self, checksum: &str, metadata: P, cancellable: Q) -> Result<(), Error>;
+
+    fn write_commit_with_time<'a, 'b, 'c, 'd, 'e, P: Into<Option<&'a str>>, Q: Into<Option<&'b str>>, R: Into<Option<&'c str>>, S: Into<Option<&'d glib::Variant>>, T: Into<Option<&'e gio::Cancellable>>>(&self, parent: P, subject: Q, body: R, metadata: S, root: &RepoFile, time: u64, cancellable: T) -> Result<String, Error>;
+
+    fn write_config(&self, new_config: &glib::KeyFile) -> Result<(), Error>;
+
+    //fn write_content<'a, 'b, P: Into<Option<&'a str>>, Q: IsA<gio::InputStream>, R: Into<Option<&'b gio::Cancellable>>>(&self, expected_checksum: P, object_input: &Q, length: u64, out_csum: /*Unknown conversion*//*Unimplemented*/FixedArray TypeId { ns_id: 0, id: 3 }; 32, cancellable: R) -> Result<(), Error>;
+
+    fn write_content_trusted<'a, P: IsA<gio::InputStream>, Q: Into<Option<&'a gio::Cancellable>>>(&self, checksum: &str, object_input: &P, length: u64, cancellable: Q) -> Result<(), Error>;
+
+    fn write_dfd_to_mtree<'a, 'b, P: Into<Option<&'a RepoCommitModifier>>, Q: Into<Option<&'b gio::Cancellable>>>(&self, dfd: i32, path: &str, mtree: &MutableTree, modifier: P, cancellable: Q) -> Result<(), Error>;
+
+    fn write_directory_to_mtree<'a, 'b, P: IsA<gio::File>, Q: Into<Option<&'a RepoCommitModifier>>, R: Into<Option<&'b gio::Cancellable>>>(&self, dir: &P, mtree: &MutableTree, modifier: Q, cancellable: R) -> Result<(), Error>;
+
+    //fn write_metadata<'a, 'b, P: Into<Option<&'a str>>, Q: Into<Option<&'b gio::Cancellable>>>(&self, objtype: ObjectType, expected_checksum: P, object: &glib::Variant, out_csum: /*Unknown conversion*//*Unimplemented*/FixedArray TypeId { ns_id: 0, id: 3 }; 32, cancellable: Q) -> Result<(), Error>;
+
+    fn write_metadata_stream_trusted<'a, P: IsA<gio::InputStream>, Q: Into<Option<&'a gio::Cancellable>>>(&self, objtype: ObjectType, checksum: &str, object_input: &P, length: u64, cancellable: Q) -> Result<(), Error>;
+
+    fn write_metadata_trusted<'a, P: Into<Option<&'a gio::Cancellable>>>(&self, objtype: ObjectType, checksum: &str, variant: &glib::Variant, cancellable: P) -> Result<(), Error>;
+
+    fn write_mtree<'a, P: Into<Option<&'a gio::Cancellable>>>(&self, mtree: &MutableTree, cancellable: P) -> Result<gio::File, Error>;
+
+    fn get_property_remotes_config_dir(&self) -> Option<String>;
+
+    fn get_property_sysroot_path(&self) -> Option<gio::File>;
+
+    fn connect_gpg_verify_result<F: Fn(&Self, &str, &GpgVerifyResult) + 'static>(&self, f: F) -> SignalHandlerId;
+}
+
+impl<O: IsA<Repo> + IsA<glib::object::Object>> RepoExt for O {
+    fn abort_transaction<'a, P: Into<Option<&'a gio::Cancellable>>>(&self, cancellable: P) -> Result<(), Error> {
+        let cancellable = cancellable.into();
+        let cancellable = cancellable.to_glib_none();
+        unsafe {
+            let mut error = ptr::null_mut();
+            let _ = ffi::ostree_repo_abort_transaction(self.to_glib_none().0, cancellable.0, &mut error);
+            if error.is_null() { Ok(()) } else { Err(from_glib_full(error)) }
+        }
+    }
+
+    fn add_gpg_signature_summary<'a, 'b, P: Into<Option<&'a str>>, Q: Into<Option<&'b gio::Cancellable>>>(&self, key_id: &[&str], homedir: P, cancellable: Q) -> Result<(), Error> {
+        let homedir = homedir.into();
+        let homedir = homedir.to_glib_none();
+        let cancellable = cancellable.into();
+        let cancellable = cancellable.to_glib_none();
+        unsafe {
+            let mut error = ptr::null_mut();
+            let _ = ffi::ostree_repo_add_gpg_signature_summary(self.to_glib_none().0, key_id.to_glib_none().0, homedir.0, cancellable.0, &mut error);
+            if error.is_null() { Ok(()) } else { Err(from_glib_full(error)) }
+        }
+    }
+
+    fn append_gpg_signature<'a, P: Into<Option<&'a gio::Cancellable>>>(&self, commit_checksum: &str, signature_bytes: &glib::Bytes, cancellable: P) -> Result<(), Error> {
+        let cancellable = cancellable.into();
+        let cancellable = cancellable.to_glib_none();
+        unsafe {
+            let mut error = ptr::null_mut();
+            let _ = ffi::ostree_repo_append_gpg_signature(self.to_glib_none().0, commit_checksum.to_glib_none().0, signature_bytes.to_glib_none().0, cancellable.0, &mut error);
+            if error.is_null() { Ok(()) } else { Err(from_glib_full(error)) }
+        }
+    }
+
+    //fn checkout_at<'a, 'b, P: Into<Option<&'a /*Ignored*/RepoCheckoutAtOptions>>, Q: Into<Option<&'b gio::Cancellable>>>(&self, options: P, destination_dfd: i32, destination_path: &str, commit: &str, cancellable: Q) -> Result<(), Error> {
+    //    unsafe { TODO: call ffi::ostree_repo_checkout_at() }
+    //}
+
+    fn checkout_gc<'a, P: Into<Option<&'a gio::Cancellable>>>(&self, cancellable: P) -> Result<(), Error> {
+        let cancellable = cancellable.into();
+        let cancellable = cancellable.to_glib_none();
+        unsafe {
+            let mut error = ptr::null_mut();
+            let _ = ffi::ostree_repo_checkout_gc(self.to_glib_none().0, cancellable.0, &mut error);
+            if error.is_null() { Ok(()) } else { Err(from_glib_full(error)) }
+        }
+    }
+
+    fn checkout_tree<'a, P: IsA<gio::File>, Q: Into<Option<&'a gio::Cancellable>>>(&self, mode: RepoCheckoutMode, overwrite_mode: RepoCheckoutOverwriteMode, destination: &P, source: &RepoFile, source_info: &gio::FileInfo, cancellable: Q) -> Result<(), Error> {
+        let cancellable = cancellable.into();
+        let cancellable = cancellable.to_glib_none();
+        unsafe {
+            let mut error = ptr::null_mut();
+            let _ = ffi::ostree_repo_checkout_tree(self.to_glib_none().0, mode.to_glib(), overwrite_mode.to_glib(), destination.to_glib_none().0, source.to_glib_none().0, source_info.to_glib_none().0, cancellable.0, &mut error);
+            if error.is_null() { Ok(()) } else { Err(from_glib_full(error)) }
+        }
+    }
+
+    //fn checkout_tree_at<'a, 'b, P: Into<Option<&'a /*Ignored*/RepoCheckoutOptions>>, Q: Into<Option<&'b gio::Cancellable>>>(&self, options: P, destination_dfd: i32, destination_path: &str, commit: &str, cancellable: Q) -> Result<(), Error> {
+    //    unsafe { TODO: call ffi::ostree_repo_checkout_tree_at() }
+    //}
+
+    fn commit_transaction<'a, P: Into<Option<&'a gio::Cancellable>>>(&self, cancellable: P) -> Result<RepoTransactionStats, Error> {
+        let cancellable = cancellable.into();
+        let cancellable = cancellable.to_glib_none();
+        unsafe {
+            let mut out_stats = RepoTransactionStats::uninitialized();
+            let mut error = ptr::null_mut();
+            let _ = ffi::ostree_repo_commit_transaction(self.to_glib_none().0, out_stats.to_glib_none_mut().0, cancellable.0, &mut error);
+            if error.is_null() { Ok(out_stats) } else { Err(from_glib_full(error)) }
+        }
+    }
+
+    fn copy_config(&self) -> Option<glib::KeyFile> {
+        unsafe {
+            from_glib_full(ffi::ostree_repo_copy_config(self.to_glib_none().0))
+        }
+    }
+
+    fn create<'a, P: Into<Option<&'a gio::Cancellable>>>(&self, mode: RepoMode, cancellable: P) -> Result<(), Error> {
+        let cancellable = cancellable.into();
+        let cancellable = cancellable.to_glib_none();
+        unsafe {
+            let mut error = ptr::null_mut();
+            let _ = ffi::ostree_repo_create(self.to_glib_none().0, mode.to_glib(), cancellable.0, &mut error);
+            if error.is_null() { Ok(()) } else { Err(from_glib_full(error)) }
+        }
+    }
+
+    fn delete_object<'a, P: Into<Option<&'a gio::Cancellable>>>(&self, objtype: ObjectType, sha256: &str, cancellable: P) -> Result<(), Error> {
+        let cancellable = cancellable.into();
+        let cancellable = cancellable.to_glib_none();
+        unsafe {
+            let mut error = ptr::null_mut();
+            let _ = ffi::ostree_repo_delete_object(self.to_glib_none().0, objtype.to_glib(), sha256.to_glib_none().0, cancellable.0, &mut error);
+            if error.is_null() { Ok(()) } else { Err(from_glib_full(error)) }
+        }
+    }
+
+    #[cfg(any(feature = "v2017_12", feature = "dox"))]
+    fn equal(&self, b: &Repo) -> bool {
+        unsafe {
+            from_glib(ffi::ostree_repo_equal(self.to_glib_none().0, b.to_glib_none().0))
+        }
+    }
+
+    //fn export_tree_to_archive<'a, P: Into<Option</*Unimplemented*/Fundamental: Pointer>>, Q: Into<Option<&'a gio::Cancellable>>>(&self, opts: /*Ignored*/&mut RepoExportArchiveOptions, root: &RepoFile, archive: P, cancellable: Q) -> Result<(), Error> {
+    //    unsafe { TODO: call ffi::ostree_repo_export_tree_to_archive() }
+    //}
+
+    #[cfg(any(feature = "v2017_15", feature = "dox"))]
+    fn fsck_object<'a, P: Into<Option<&'a gio::Cancellable>>>(&self, objtype: ObjectType, sha256: &str, cancellable: P) -> Result<(), Error> {
+        let cancellable = cancellable.into();
+        let cancellable = cancellable.to_glib_none();
+        unsafe {
+            let mut error = ptr::null_mut();
+            let _ = ffi::ostree_repo_fsck_object(self.to_glib_none().0, objtype.to_glib(), sha256.to_glib_none().0, cancellable.0, &mut error);
+            if error.is_null() { Ok(()) } else { Err(from_glib_full(error)) }
+        }
+    }
+
+    #[cfg(any(feature = "v2018_6", feature = "dox"))]
+    fn get_collection_id(&self) -> Option<String> {
+        unsafe {
+            from_glib_none(ffi::ostree_repo_get_collection_id(self.to_glib_none().0))
+        }
+    }
+
+    fn get_config(&self) -> Option<glib::KeyFile> {
+        unsafe {
+            from_glib_none(ffi::ostree_repo_get_config(self.to_glib_none().0))
+        }
+    }
+
+    fn get_dfd(&self) -> i32 {
+        unsafe {
+            ffi::ostree_repo_get_dfd(self.to_glib_none().0)
+        }
+    }
+
+    fn get_disable_fsync(&self) -> bool {
+        unsafe {
+            from_glib(ffi::ostree_repo_get_disable_fsync(self.to_glib_none().0))
+        }
+    }
+
+    fn get_mode(&self) -> RepoMode {
+        unsafe {
+            from_glib(ffi::ostree_repo_get_mode(self.to_glib_none().0))
+        }
+    }
+
+    fn get_parent(&self) -> Option<Repo> {
+        unsafe {
+            from_glib_none(ffi::ostree_repo_get_parent(self.to_glib_none().0))
+        }
+    }
+
+    fn get_path(&self) -> Option<gio::File> {
+        unsafe {
+            from_glib_none(ffi::ostree_repo_get_path(self.to_glib_none().0))
+        }
+    }
+
+    fn get_remote_boolean_option(&self, remote_name: &str, option_name: &str, default_value: bool) -> Result<bool, Error> {
+        unsafe {
+            let mut out_value = mem::uninitialized();
+            let mut error = ptr::null_mut();
+            let _ = ffi::ostree_repo_get_remote_boolean_option(self.to_glib_none().0, remote_name.to_glib_none().0, option_name.to_glib_none().0, default_value.to_glib(), &mut out_value, &mut error);
+            if error.is_null() { Ok(from_glib(out_value)) } else { Err(from_glib_full(error)) }
+        }
+    }
+
+    fn get_remote_list_option(&self, remote_name: &str, option_name: &str) -> Result<Vec<String>, Error> {
+        unsafe {
+            let mut out_value = ptr::null_mut();
+            let mut error = ptr::null_mut();
+            let _ = ffi::ostree_repo_get_remote_list_option(self.to_glib_none().0, remote_name.to_glib_none().0, option_name.to_glib_none().0, &mut out_value, &mut error);
+            if error.is_null() { Ok(FromGlibPtrContainer::from_glib_full(out_value)) } else { Err(from_glib_full(error)) }
+        }
+    }
+
+    fn get_remote_option<'a, P: Into<Option<&'a str>>>(&self, remote_name: &str, option_name: &str, default_value: P) -> Result<String, Error> {
+        let default_value = default_value.into();
+        let default_value = default_value.to_glib_none();
+        unsafe {
+            let mut out_value = ptr::null_mut();
+            let mut error = ptr::null_mut();
+            let _ = ffi::ostree_repo_get_remote_option(self.to_glib_none().0, remote_name.to_glib_none().0, option_name.to_glib_none().0, default_value.0, &mut out_value, &mut error);
+            if error.is_null() { Ok(from_glib_full(out_value)) } else { Err(from_glib_full(error)) }
+        }
+    }
+
+    fn gpg_verify_data<'a, 'b, 'c, 'd, P: Into<Option<&'a str>>, Q: IsA<gio::File> + 'b, R: Into<Option<&'b Q>>, S: IsA<gio::File> + 'c, T: Into<Option<&'c S>>, U: Into<Option<&'d gio::Cancellable>>>(&self, remote_name: P, data: &glib::Bytes, signatures: &glib::Bytes, keyringdir: R, extra_keyring: T, cancellable: U) -> Result<GpgVerifyResult, Error> {
+        let remote_name = remote_name.into();
+        let remote_name = remote_name.to_glib_none();
+        let keyringdir = keyringdir.into();
+        let keyringdir = keyringdir.to_glib_none();
+        let extra_keyring = extra_keyring.into();
+        let extra_keyring = extra_keyring.to_glib_none();
+        let cancellable = cancellable.into();
+        let cancellable = cancellable.to_glib_none();
+        unsafe {
+            let mut error = ptr::null_mut();
+            let ret = ffi::ostree_repo_gpg_verify_data(self.to_glib_none().0, remote_name.0, data.to_glib_none().0, signatures.to_glib_none().0, keyringdir.0, extra_keyring.0, cancellable.0, &mut error);
+            if error.is_null() { Ok(from_glib_full(ret)) } else { Err(from_glib_full(error)) }
+        }
+    }
+
+    fn has_object<'a, P: Into<Option<&'a gio::Cancellable>>>(&self, objtype: ObjectType, checksum: &str, cancellable: P) -> Result<bool, Error> {
+        let cancellable = cancellable.into();
+        let cancellable = cancellable.to_glib_none();
+        unsafe {
+            let mut out_have_object = mem::uninitialized();
+            let mut error = ptr::null_mut();
+            let _ = ffi::ostree_repo_has_object(self.to_glib_none().0, objtype.to_glib(), checksum.to_glib_none().0, &mut out_have_object, cancellable.0, &mut error);
+            if error.is_null() { Ok(from_glib(out_have_object)) } else { Err(from_glib_full(error)) }
+        }
+    }
+
+    #[cfg(any(feature = "v2017_12", feature = "dox"))]
+    fn hash(&self) -> u32 {
+        unsafe {
+            ffi::ostree_repo_hash(self.to_glib_none().0)
+        }
+    }
+
+    //fn import_archive_to_mtree<'a, 'b, P: Into<Option</*Unimplemented*/Fundamental: Pointer>>, Q: Into<Option<&'a RepoCommitModifier>>, R: Into<Option<&'b gio::Cancellable>>>(&self, opts: /*Ignored*/&mut RepoImportArchiveOptions, archive: P, mtree: &MutableTree, modifier: Q, cancellable: R) -> Result<(), Error> {
+    //    unsafe { TODO: call ffi::ostree_repo_import_archive_to_mtree() }
+    //}
+
+    fn import_object_from<'a, P: Into<Option<&'a gio::Cancellable>>>(&self, source: &Repo, objtype: ObjectType, checksum: &str, cancellable: P) -> Result<(), Error> {
+        let cancellable = cancellable.into();
+        let cancellable = cancellable.to_glib_none();
+        unsafe {
+            let mut error = ptr::null_mut();
+            let _ = ffi::ostree_repo_import_object_from(self.to_glib_none().0, source.to_glib_none().0, objtype.to_glib(), checksum.to_glib_none().0, cancellable.0, &mut error);
+            if error.is_null() { Ok(()) } else { Err(from_glib_full(error)) }
+        }
+    }
+
+    fn import_object_from_with_trust<'a, P: Into<Option<&'a gio::Cancellable>>>(&self, source: &Repo, objtype: ObjectType, checksum: &str, trusted: bool, cancellable: P) -> Result<(), Error> {
+        let cancellable = cancellable.into();
+        let cancellable = cancellable.to_glib_none();
+        unsafe {
+            let mut error = ptr::null_mut();
+            let _ = ffi::ostree_repo_import_object_from_with_trust(self.to_glib_none().0, source.to_glib_none().0, objtype.to_glib(), checksum.to_glib_none().0, trusted.to_glib(), cancellable.0, &mut error);
+            if error.is_null() { Ok(()) } else { Err(from_glib_full(error)) }
+        }
+    }
+
+    fn is_system(&self) -> bool {
+        unsafe {
+            from_glib(ffi::ostree_repo_is_system(self.to_glib_none().0))
+        }
+    }
+
+    fn is_writable(&self) -> Result<(), Error> {
+        unsafe {
+            let mut error = ptr::null_mut();
+            let _ = ffi::ostree_repo_is_writable(self.to_glib_none().0, &mut error);
+            if error.is_null() { Ok(()) } else { Err(from_glib_full(error)) }
+        }
+    }
+
+    //#[cfg(any(feature = "v2018_6", feature = "dox"))]
+    //fn list_collection_refs<'a, 'b, P: Into<Option<&'a str>>, Q: Into<Option<&'b gio::Cancellable>>>(&self, match_collection_id: P, out_all_refs: /*Unknown conversion*//*Unimplemented*/HashTable TypeId { ns_id: 1, id: 0 }/TypeId { ns_id: 0, id: 28 }, flags: RepoListRefsExtFlags, cancellable: Q) -> Result<(), Error> {
+    //    unsafe { TODO: call ffi::ostree_repo_list_collection_refs() }
+    //}
+
+    //fn list_commit_objects_starting_with<'a, P: Into<Option<&'a gio::Cancellable>>>(&self, start: &str, out_commits: /*Unknown conversion*//*Unimplemented*/HashTable TypeId { ns_id: 2, id: 181 }/TypeId { ns_id: 2, id: 181 }, cancellable: P) -> Result<(), Error> {
+    //    unsafe { TODO: call ffi::ostree_repo_list_commit_objects_starting_with() }
+    //}
+
+    //fn list_objects<'a, P: Into<Option<&'a gio::Cancellable>>>(&self, flags: /*Ignored*/RepoListObjectsFlags, out_objects: /*Unknown conversion*//*Unimplemented*/HashTable TypeId { ns_id: 2, id: 181 }/TypeId { ns_id: 2, id: 181 }, cancellable: P) -> Result<(), Error> {
+    //    unsafe { TODO: call ffi::ostree_repo_list_objects() }
+    //}
+
+    //fn list_refs<'a, 'b, P: Into<Option<&'a str>>, Q: Into<Option<&'b gio::Cancellable>>>(&self, refspec_prefix: P, out_all_refs: /*Unknown conversion*//*Unimplemented*/HashTable TypeId { ns_id: 0, id: 28 }/TypeId { ns_id: 0, id: 28 }, cancellable: Q) -> Result<(), Error> {
+    //    unsafe { TODO: call ffi::ostree_repo_list_refs() }
+    //}
+
+    //fn list_refs_ext<'a, 'b, P: Into<Option<&'a str>>, Q: Into<Option<&'b gio::Cancellable>>>(&self, refspec_prefix: P, out_all_refs: /*Unknown conversion*//*Unimplemented*/HashTable TypeId { ns_id: 0, id: 28 }/TypeId { ns_id: 0, id: 28 }, flags: RepoListRefsExtFlags, cancellable: Q) -> Result<(), Error> {
+    //    unsafe { TODO: call ffi::ostree_repo_list_refs_ext() }
+    //}
+
+    //fn list_static_delta_names<'a, P: Into<Option<&'a gio::Cancellable>>>(&self, out_deltas: /*Unknown conversion*//*Unimplemented*/PtrArray TypeId { ns_id: 0, id: 28 }, cancellable: P) -> Result<(), Error> {
+    //    unsafe { TODO: call ffi::ostree_repo_list_static_delta_names() }
+    //}
+
+    #[cfg(any(feature = "v2015_7", feature = "dox"))]
+    fn load_commit(&self, checksum: &str) -> Result<(glib::Variant, RepoCommitState), Error> {
+        unsafe {
+            let mut out_commit = ptr::null_mut();
+            let mut out_state = mem::uninitialized();
+            let mut error = ptr::null_mut();
+            let _ = ffi::ostree_repo_load_commit(self.to_glib_none().0, checksum.to_glib_none().0, &mut out_commit, &mut out_state, &mut error);
+            if error.is_null() { Ok((from_glib_full(out_commit), from_glib(out_state))) } else { Err(from_glib_full(error)) }
+        }
+    }
+
+    fn load_file<'a, P: Into<Option<&'a gio::Cancellable>>>(&self, checksum: &str, cancellable: P) -> Result<(Option<gio::InputStream>, Option<gio::FileInfo>, Option<glib::Variant>), Error> {
+        let cancellable = cancellable.into();
+        let cancellable = cancellable.to_glib_none();
+        unsafe {
+            let mut out_input = ptr::null_mut();
+            let mut out_file_info = ptr::null_mut();
+            let mut out_xattrs = ptr::null_mut();
+            let mut error = ptr::null_mut();
+            let _ = ffi::ostree_repo_load_file(self.to_glib_none().0, checksum.to_glib_none().0, &mut out_input, &mut out_file_info, &mut out_xattrs, cancellable.0, &mut error);
+            if error.is_null() { Ok((from_glib_full(out_input), from_glib_full(out_file_info), from_glib_full(out_xattrs))) } else { Err(from_glib_full(error)) }
+        }
+    }
+
+    fn load_object_stream<'a, P: Into<Option<&'a gio::Cancellable>>>(&self, objtype: ObjectType, checksum: &str, cancellable: P) -> Result<(gio::InputStream, u64), Error> {
+        let cancellable = cancellable.into();
+        let cancellable = cancellable.to_glib_none();
+        unsafe {
+            let mut out_input = ptr::null_mut();
+            let mut out_size = mem::uninitialized();
+            let mut error = ptr::null_mut();
+            let _ = ffi::ostree_repo_load_object_stream(self.to_glib_none().0, objtype.to_glib(), checksum.to_glib_none().0, &mut out_input, &mut out_size, cancellable.0, &mut error);
+            if error.is_null() { Ok((from_glib_full(out_input), out_size)) } else { Err(from_glib_full(error)) }
+        }
+    }
+
+    fn load_variant(&self, objtype: ObjectType, sha256: &str) -> Result<glib::Variant, Error> {
+        unsafe {
+            let mut out_variant = ptr::null_mut();
+            let mut error = ptr::null_mut();
+            let _ = ffi::ostree_repo_load_variant(self.to_glib_none().0, objtype.to_glib(), sha256.to_glib_none().0, &mut out_variant, &mut error);
+            if error.is_null() { Ok(from_glib_full(out_variant)) } else { Err(from_glib_full(error)) }
+        }
+    }
+
+    fn load_variant_if_exists(&self, objtype: ObjectType, sha256: &str) -> Result<glib::Variant, Error> {
+        unsafe {
+            let mut out_variant = ptr::null_mut();
+            let mut error = ptr::null_mut();
+            let _ = ffi::ostree_repo_load_variant_if_exists(self.to_glib_none().0, objtype.to_glib(), sha256.to_glib_none().0, &mut out_variant, &mut error);
+            if error.is_null() { Ok(from_glib_full(out_variant)) } else { Err(from_glib_full(error)) }
+        }
+    }
+
+    #[cfg(any(feature = "v2017_15", feature = "dox"))]
+    fn mark_commit_partial(&self, checksum: &str, is_partial: bool) -> Result<(), Error> {
+        unsafe {
+            let mut error = ptr::null_mut();
+            let _ = ffi::ostree_repo_mark_commit_partial(self.to_glib_none().0, checksum.to_glib_none().0, is_partial.to_glib(), &mut error);
+            if error.is_null() { Ok(()) } else { Err(from_glib_full(error)) }
+        }
+    }
+
+    fn open<'a, P: Into<Option<&'a gio::Cancellable>>>(&self, cancellable: P) -> Result<(), Error> {
+        let cancellable = cancellable.into();
+        let cancellable = cancellable.to_glib_none();
+        unsafe {
+            let mut error = ptr::null_mut();
+            let _ = ffi::ostree_repo_open(self.to_glib_none().0, cancellable.0, &mut error);
+            if error.is_null() { Ok(()) } else { Err(from_glib_full(error)) }
+        }
+    }
+
+    fn prepare_transaction<'a, P: Into<Option<&'a gio::Cancellable>>>(&self, cancellable: P) -> Result<bool, Error> {
+        let cancellable = cancellable.into();
+        let cancellable = cancellable.to_glib_none();
+        unsafe {
+            let mut out_transaction_resume = mem::uninitialized();
+            let mut error = ptr::null_mut();
+            let _ = ffi::ostree_repo_prepare_transaction(self.to_glib_none().0, &mut out_transaction_resume, cancellable.0, &mut error);
+            if error.is_null() { Ok(from_glib(out_transaction_resume)) } else { Err(from_glib_full(error)) }
+        }
+    }
+
+    fn prune<'a, P: Into<Option<&'a gio::Cancellable>>>(&self, flags: RepoPruneFlags, depth: i32, cancellable: P) -> Result<(i32, i32, u64), Error> {
+        let cancellable = cancellable.into();
+        let cancellable = cancellable.to_glib_none();
+        unsafe {
+            let mut out_objects_total = mem::uninitialized();
+            let mut out_objects_pruned = mem::uninitialized();
+            let mut out_pruned_object_size_total = mem::uninitialized();
+            let mut error = ptr::null_mut();
+            let _ = ffi::ostree_repo_prune(self.to_glib_none().0, flags.to_glib(), depth, &mut out_objects_total, &mut out_objects_pruned, &mut out_pruned_object_size_total, cancellable.0, &mut error);
+            if error.is_null() { Ok((out_objects_total, out_objects_pruned, out_pruned_object_size_total)) } else { Err(from_glib_full(error)) }
+        }
+    }
+
+    //fn prune_from_reachable<'a, P: Into<Option<&'a gio::Cancellable>>>(&self, options: /*Ignored*/&mut RepoPruneOptions, cancellable: P) -> Result<(i32, i32, u64), Error> {
+    //    unsafe { TODO: call ffi::ostree_repo_prune_from_reachable() }
+    //}
+
+    fn prune_static_deltas<'a, 'b, P: Into<Option<&'a str>>, Q: Into<Option<&'b gio::Cancellable>>>(&self, commit: P, cancellable: Q) -> Result<(), Error> {
+        let commit = commit.into();
+        let commit = commit.to_glib_none();
+        let cancellable = cancellable.into();
+        let cancellable = cancellable.to_glib_none();
+        unsafe {
+            let mut error = ptr::null_mut();
+            let _ = ffi::ostree_repo_prune_static_deltas(self.to_glib_none().0, commit.0, cancellable.0, &mut error);
+            if error.is_null() { Ok(()) } else { Err(from_glib_full(error)) }
+        }
+    }
+
+    fn pull<'a, 'b, P: Into<Option<&'a AsyncProgress>>, Q: Into<Option<&'b gio::Cancellable>>>(&self, remote_name: &str, refs_to_fetch: &[&str], flags: RepoPullFlags, progress: P, cancellable: Q) -> Result<(), Error> {
+        let progress = progress.into();
+        let progress = progress.to_glib_none();
+        let cancellable = cancellable.into();
+        let cancellable = cancellable.to_glib_none();
+        unsafe {
+            let mut error = ptr::null_mut();
+            let _ = ffi::ostree_repo_pull(self.to_glib_none().0, remote_name.to_glib_none().0, refs_to_fetch.to_glib_none().0, flags.to_glib(), progress.0, cancellable.0, &mut error);
+            if error.is_null() { Ok(()) } else { Err(from_glib_full(error)) }
+        }
+    }
+
+    fn pull_one_dir<'a, 'b, P: Into<Option<&'a AsyncProgress>>, Q: Into<Option<&'b gio::Cancellable>>>(&self, remote_name: &str, dir_to_pull: &str, refs_to_fetch: &[&str], flags: RepoPullFlags, progress: P, cancellable: Q) -> Result<(), Error> {
+        let progress = progress.into();
+        let progress = progress.to_glib_none();
+        let cancellable = cancellable.into();
+        let cancellable = cancellable.to_glib_none();
+        unsafe {
+            let mut error = ptr::null_mut();
+            let _ = ffi::ostree_repo_pull_one_dir(self.to_glib_none().0, remote_name.to_glib_none().0, dir_to_pull.to_glib_none().0, refs_to_fetch.to_glib_none().0, flags.to_glib(), progress.0, cancellable.0, &mut error);
+            if error.is_null() { Ok(()) } else { Err(from_glib_full(error)) }
+        }
+    }
+
+    fn pull_with_options<'a, 'b, P: Into<Option<&'a AsyncProgress>>, Q: Into<Option<&'b gio::Cancellable>>>(&self, remote_name_or_baseurl: &str, options: &glib::Variant, progress: P, cancellable: Q) -> Result<(), Error> {
+        let progress = progress.into();
+        let progress = progress.to_glib_none();
+        let cancellable = cancellable.into();
+        let cancellable = cancellable.to_glib_none();
+        unsafe {
+            let mut error = ptr::null_mut();
+            let _ = ffi::ostree_repo_pull_with_options(self.to_glib_none().0, remote_name_or_baseurl.to_glib_none().0, options.to_glib_none().0, progress.0, cancellable.0, &mut error);
+            if error.is_null() { Ok(()) } else { Err(from_glib_full(error)) }
+        }
+    }
+
+    fn query_object_storage_size<'a, P: Into<Option<&'a gio::Cancellable>>>(&self, objtype: ObjectType, sha256: &str, cancellable: P) -> Result<u64, Error> {
+        let cancellable = cancellable.into();
+        let cancellable = cancellable.to_glib_none();
+        unsafe {
+            let mut out_size = mem::uninitialized();
+            let mut error = ptr::null_mut();
+            let _ = ffi::ostree_repo_query_object_storage_size(self.to_glib_none().0, objtype.to_glib(), sha256.to_glib_none().0, &mut out_size, cancellable.0, &mut error);
+            if error.is_null() { Ok(out_size) } else { Err(from_glib_full(error)) }
+        }
+    }
+
+    fn read_commit<'a, P: Into<Option<&'a gio::Cancellable>>>(&self, ref_: &str, cancellable: P) -> Result<(gio::File, String), Error> {
+        let cancellable = cancellable.into();
+        let cancellable = cancellable.to_glib_none();
+        unsafe {
+            let mut out_root = ptr::null_mut();
+            let mut out_commit = ptr::null_mut();
+            let mut error = ptr::null_mut();
+            let _ = ffi::ostree_repo_read_commit(self.to_glib_none().0, ref_.to_glib_none().0, &mut out_root, &mut out_commit, cancellable.0, &mut error);
+            if error.is_null() { Ok((from_glib_full(out_root), from_glib_full(out_commit))) } else { Err(from_glib_full(error)) }
+        }
+    }
+
+    fn read_commit_detached_metadata<'a, P: Into<Option<&'a gio::Cancellable>>>(&self, checksum: &str, cancellable: P) -> Result<glib::Variant, Error> {
+        let cancellable = cancellable.into();
+        let cancellable = cancellable.to_glib_none();
+        unsafe {
+            let mut out_metadata = ptr::null_mut();
+            let mut error = ptr::null_mut();
+            let _ = ffi::ostree_repo_read_commit_detached_metadata(self.to_glib_none().0, checksum.to_glib_none().0, &mut out_metadata, cancellable.0, &mut error);
+            if error.is_null() { Ok(from_glib_full(out_metadata)) } else { Err(from_glib_full(error)) }
+        }
+    }
+
+    fn regenerate_summary<'a, 'b, P: Into<Option<&'a glib::Variant>>, Q: Into<Option<&'b gio::Cancellable>>>(&self, additional_metadata: P, cancellable: Q) -> Result<(), Error> {
+        let additional_metadata = additional_metadata.into();
+        let additional_metadata = additional_metadata.to_glib_none();
+        let cancellable = cancellable.into();
+        let cancellable = cancellable.to_glib_none();
+        unsafe {
+            let mut error = ptr::null_mut();
+            let _ = ffi::ostree_repo_regenerate_summary(self.to_glib_none().0, additional_metadata.0, cancellable.0, &mut error);
+            if error.is_null() { Ok(()) } else { Err(from_glib_full(error)) }
+        }
+    }
+
+    fn reload_config<'a, P: Into<Option<&'a gio::Cancellable>>>(&self, cancellable: P) -> Result<(), Error> {
+        let cancellable = cancellable.into();
+        let cancellable = cancellable.to_glib_none();
+        unsafe {
+            let mut error = ptr::null_mut();
+            let _ = ffi::ostree_repo_reload_config(self.to_glib_none().0, cancellable.0, &mut error);
+            if error.is_null() { Ok(()) } else { Err(from_glib_full(error)) }
+        }
+    }
+
+    fn remote_add<'a, 'b, P: Into<Option<&'a glib::Variant>>, Q: Into<Option<&'b gio::Cancellable>>>(&self, name: &str, url: &str, options: P, cancellable: Q) -> Result<(), Error> {
+        let options = options.into();
+        let options = options.to_glib_none();
+        let cancellable = cancellable.into();
+        let cancellable = cancellable.to_glib_none();
+        unsafe {
+            let mut error = ptr::null_mut();
+            let _ = ffi::ostree_repo_remote_add(self.to_glib_none().0, name.to_glib_none().0, url.to_glib_none().0, options.0, cancellable.0, &mut error);
+            if error.is_null() { Ok(()) } else { Err(from_glib_full(error)) }
+        }
+    }
+
+    fn remote_change<'a, 'b, 'c, P: IsA<gio::File> + 'a, Q: Into<Option<&'a P>>, R: Into<Option<&'b glib::Variant>>, S: Into<Option<&'c gio::Cancellable>>>(&self, sysroot: Q, changeop: RepoRemoteChange, name: &str, url: &str, options: R, cancellable: S) -> Result<(), Error> {
+        let sysroot = sysroot.into();
+        let sysroot = sysroot.to_glib_none();
+        let options = options.into();
+        let options = options.to_glib_none();
+        let cancellable = cancellable.into();
+        let cancellable = cancellable.to_glib_none();
+        unsafe {
+            let mut error = ptr::null_mut();
+            let _ = ffi::ostree_repo_remote_change(self.to_glib_none().0, sysroot.0, changeop.to_glib(), name.to_glib_none().0, url.to_glib_none().0, options.0, cancellable.0, &mut error);
+            if error.is_null() { Ok(()) } else { Err(from_glib_full(error)) }
+        }
+    }
+
+    fn remote_delete<'a, P: Into<Option<&'a gio::Cancellable>>>(&self, name: &str, cancellable: P) -> Result<(), Error> {
+        let cancellable = cancellable.into();
+        let cancellable = cancellable.to_glib_none();
+        unsafe {
+            let mut error = ptr::null_mut();
+            let _ = ffi::ostree_repo_remote_delete(self.to_glib_none().0, name.to_glib_none().0, cancellable.0, &mut error);
+            if error.is_null() { Ok(()) } else { Err(from_glib_full(error)) }
+        }
+    }
+
+    fn remote_fetch_summary<'a, P: Into<Option<&'a gio::Cancellable>>>(&self, name: &str, cancellable: P) -> Result<(glib::Bytes, glib::Bytes), Error> {
+        let cancellable = cancellable.into();
+        let cancellable = cancellable.to_glib_none();
+        unsafe {
+            let mut out_summary = ptr::null_mut();
+            let mut out_signatures = ptr::null_mut();
+            let mut error = ptr::null_mut();
+            let _ = ffi::ostree_repo_remote_fetch_summary(self.to_glib_none().0, name.to_glib_none().0, &mut out_summary, &mut out_signatures, cancellable.0, &mut error);
+            if error.is_null() { Ok((from_glib_full(out_summary), from_glib_full(out_signatures))) } else { Err(from_glib_full(error)) }
+        }
+    }
+
+    fn remote_fetch_summary_with_options<'a, 'b, P: Into<Option<&'a glib::Variant>>, Q: Into<Option<&'b gio::Cancellable>>>(&self, name: &str, options: P, cancellable: Q) -> Result<(glib::Bytes, glib::Bytes), Error> {
+        let options = options.into();
+        let options = options.to_glib_none();
+        let cancellable = cancellable.into();
+        let cancellable = cancellable.to_glib_none();
+        unsafe {
+            let mut out_summary = ptr::null_mut();
+            let mut out_signatures = ptr::null_mut();
+            let mut error = ptr::null_mut();
+            let _ = ffi::ostree_repo_remote_fetch_summary_with_options(self.to_glib_none().0, name.to_glib_none().0, options.0, &mut out_summary, &mut out_signatures, cancellable.0, &mut error);
+            if error.is_null() { Ok((from_glib_full(out_summary), from_glib_full(out_signatures))) } else { Err(from_glib_full(error)) }
+        }
+    }
+
+    fn remote_get_gpg_verify(&self, name: &str) -> Result<bool, Error> {
+        unsafe {
+            let mut out_gpg_verify = mem::uninitialized();
+            let mut error = ptr::null_mut();
+            let _ = ffi::ostree_repo_remote_get_gpg_verify(self.to_glib_none().0, name.to_glib_none().0, &mut out_gpg_verify, &mut error);
+            if error.is_null() { Ok(from_glib(out_gpg_verify)) } else { Err(from_glib_full(error)) }
+        }
+    }
+
+    fn remote_get_gpg_verify_summary(&self, name: &str) -> Result<bool, Error> {
+        unsafe {
+            let mut out_gpg_verify_summary = mem::uninitialized();
+            let mut error = ptr::null_mut();
+            let _ = ffi::ostree_repo_remote_get_gpg_verify_summary(self.to_glib_none().0, name.to_glib_none().0, &mut out_gpg_verify_summary, &mut error);
+            if error.is_null() { Ok(from_glib(out_gpg_verify_summary)) } else { Err(from_glib_full(error)) }
+        }
+    }
+
+    fn remote_get_url(&self, name: &str) -> Result<String, Error> {
+        unsafe {
+            let mut out_url = ptr::null_mut();
+            let mut error = ptr::null_mut();
+            let _ = ffi::ostree_repo_remote_get_url(self.to_glib_none().0, name.to_glib_none().0, &mut out_url, &mut error);
+            if error.is_null() { Ok(from_glib_full(out_url)) } else { Err(from_glib_full(error)) }
+        }
+    }
+
+    fn remote_list(&self) -> Vec<String> {
+        unsafe {
+            let mut out_n_remotes = mem::uninitialized();
+            let ret = FromGlibContainer::from_glib_full_num(ffi::ostree_repo_remote_list(self.to_glib_none().0, &mut out_n_remotes), out_n_remotes as usize);
+            ret
+        }
+    }
+
+    //#[cfg(any(feature = "v2018_6", feature = "dox"))]
+    //fn remote_list_collection_refs<'a, P: Into<Option<&'a gio::Cancellable>>>(&self, remote_name: &str, out_all_refs: /*Unknown conversion*//*Unimplemented*/HashTable TypeId { ns_id: 1, id: 0 }/TypeId { ns_id: 0, id: 28 }, cancellable: P) -> Result<(), Error> {
+    //    unsafe { TODO: call ffi::ostree_repo_remote_list_collection_refs() }
+    //}
+
+    //fn remote_list_refs<'a, P: Into<Option<&'a gio::Cancellable>>>(&self, remote_name: &str, out_all_refs: /*Unknown conversion*//*Unimplemented*/HashTable TypeId { ns_id: 0, id: 28 }/TypeId { ns_id: 0, id: 28 }, cancellable: P) -> Result<(), Error> {
+    //    unsafe { TODO: call ffi::ostree_repo_remote_list_refs() }
+    //}
+
+    #[cfg(any(feature = "v2018_6", feature = "dox"))]
+    fn resolve_collection_ref<'a, P: Into<Option<&'a gio::Cancellable>>>(&self, ref_: &CollectionRef, allow_noent: bool, flags: RepoResolveRevExtFlags, cancellable: P) -> Result<Option<String>, Error> {
+        let cancellable = cancellable.into();
+        let cancellable = cancellable.to_glib_none();
+        unsafe {
+            let mut out_rev = ptr::null_mut();
+            let mut error = ptr::null_mut();
+            let _ = ffi::ostree_repo_resolve_collection_ref(self.to_glib_none().0, ref_.to_glib_none().0, allow_noent.to_glib(), flags.to_glib(), &mut out_rev, cancellable.0, &mut error);
+            if error.is_null() { Ok(from_glib_full(out_rev)) } else { Err(from_glib_full(error)) }
+        }
+    }
+
+    #[cfg(any(feature = "v2018_6", feature = "dox"))]
+    fn resolve_keyring_for_collection<'a, P: Into<Option<&'a gio::Cancellable>>>(&self, collection_id: &str, cancellable: P) -> Result<Remote, Error> {
+        let cancellable = cancellable.into();
+        let cancellable = cancellable.to_glib_none();
+        unsafe {
+            let mut error = ptr::null_mut();
+            let ret = ffi::ostree_repo_resolve_keyring_for_collection(self.to_glib_none().0, collection_id.to_glib_none().0, cancellable.0, &mut error);
+            if error.is_null() { Ok(from_glib_full(ret)) } else { Err(from_glib_full(error)) }
+        }
+    }
+
+    fn resolve_rev(&self, refspec: &str, allow_noent: bool) -> Result<String, Error> {
+        unsafe {
+            let mut out_rev = ptr::null_mut();
+            let mut error = ptr::null_mut();
+            let _ = ffi::ostree_repo_resolve_rev(self.to_glib_none().0, refspec.to_glib_none().0, allow_noent.to_glib(), &mut out_rev, &mut error);
+            if error.is_null() { Ok(from_glib_full(out_rev)) } else { Err(from_glib_full(error)) }
+        }
+    }
+
+    fn resolve_rev_ext(&self, refspec: &str, allow_noent: bool, flags: RepoResolveRevExtFlags) -> Result<String, Error> {
+        unsafe {
+            let mut out_rev = ptr::null_mut();
+            let mut error = ptr::null_mut();
+            let _ = ffi::ostree_repo_resolve_rev_ext(self.to_glib_none().0, refspec.to_glib_none().0, allow_noent.to_glib(), flags.to_glib(), &mut out_rev, &mut error);
+            if error.is_null() { Ok(from_glib_full(out_rev)) } else { Err(from_glib_full(error)) }
+        }
+    }
+
+    fn scan_hardlinks<'a, P: Into<Option<&'a gio::Cancellable>>>(&self, cancellable: P) -> Result<(), Error> {
+        let cancellable = cancellable.into();
+        let cancellable = cancellable.to_glib_none();
+        unsafe {
+            let mut error = ptr::null_mut();
+            let _ = ffi::ostree_repo_scan_hardlinks(self.to_glib_none().0, cancellable.0, &mut error);
+            if error.is_null() { Ok(()) } else { Err(from_glib_full(error)) }
+        }
+    }
+
+    fn set_alias_ref_immediate<'a, 'b, 'c, P: Into<Option<&'a str>>, Q: Into<Option<&'b str>>, R: Into<Option<&'c gio::Cancellable>>>(&self, remote: P, ref_: &str, target: Q, cancellable: R) -> Result<(), Error> {
+        let remote = remote.into();
+        let remote = remote.to_glib_none();
+        let target = target.into();
+        let target = target.to_glib_none();
+        let cancellable = cancellable.into();
+        let cancellable = cancellable.to_glib_none();
+        unsafe {
+            let mut error = ptr::null_mut();
+            let _ = ffi::ostree_repo_set_alias_ref_immediate(self.to_glib_none().0, remote.0, ref_.to_glib_none().0, target.0, cancellable.0, &mut error);
+            if error.is_null() { Ok(()) } else { Err(from_glib_full(error)) }
+        }
+    }
+
+    fn set_cache_dir<'a, P: Into<Option<&'a gio::Cancellable>>>(&self, dfd: i32, path: &str, cancellable: P) -> Result<(), Error> {
+        let cancellable = cancellable.into();
+        let cancellable = cancellable.to_glib_none();
+        unsafe {
+            let mut error = ptr::null_mut();
+            let _ = ffi::ostree_repo_set_cache_dir(self.to_glib_none().0, dfd, path.to_glib_none().0, cancellable.0, &mut error);
+            if error.is_null() { Ok(()) } else { Err(from_glib_full(error)) }
+        }
+    }
+
+    #[cfg(any(feature = "v2018_6", feature = "dox"))]
+    fn set_collection_id<'a, P: Into<Option<&'a str>>>(&self, collection_id: P) -> Result<(), Error> {
+        let collection_id = collection_id.into();
+        let collection_id = collection_id.to_glib_none();
+        unsafe {
+            let mut error = ptr::null_mut();
+            let _ = ffi::ostree_repo_set_collection_id(self.to_glib_none().0, collection_id.0, &mut error);
+            if error.is_null() { Ok(()) } else { Err(from_glib_full(error)) }
+        }
+    }
+
+    #[cfg(any(feature = "v2018_6", feature = "dox"))]
+    fn set_collection_ref_immediate<'a, 'b, P: Into<Option<&'a str>>, Q: Into<Option<&'b gio::Cancellable>>>(&self, ref_: &CollectionRef, checksum: P, cancellable: Q) -> Result<(), Error> {
+        let checksum = checksum.into();
+        let checksum = checksum.to_glib_none();
+        let cancellable = cancellable.into();
+        let cancellable = cancellable.to_glib_none();
+        unsafe {
+            let mut error = ptr::null_mut();
+            let _ = ffi::ostree_repo_set_collection_ref_immediate(self.to_glib_none().0, ref_.to_glib_none().0, checksum.0, cancellable.0, &mut error);
+            if error.is_null() { Ok(()) } else { Err(from_glib_full(error)) }
+        }
+    }
+
+    fn set_disable_fsync(&self, disable_fsync: bool) {
+        unsafe {
+            ffi::ostree_repo_set_disable_fsync(self.to_glib_none().0, disable_fsync.to_glib());
+        }
+    }
+
+    fn set_ref_immediate<'a, 'b, 'c, P: Into<Option<&'a str>>, Q: Into<Option<&'b str>>, R: Into<Option<&'c gio::Cancellable>>>(&self, remote: P, ref_: &str, checksum: Q, cancellable: R) -> Result<(), Error> {
+        let remote = remote.into();
+        let remote = remote.to_glib_none();
+        let checksum = checksum.into();
+        let checksum = checksum.to_glib_none();
+        let cancellable = cancellable.into();
+        let cancellable = cancellable.to_glib_none();
+        unsafe {
+            let mut error = ptr::null_mut();
+            let _ = ffi::ostree_repo_set_ref_immediate(self.to_glib_none().0, remote.0, ref_.to_glib_none().0, checksum.0, cancellable.0, &mut error);
+            if error.is_null() { Ok(()) } else { Err(from_glib_full(error)) }
+        }
+    }
+
+    fn sign_commit<'a, 'b, P: Into<Option<&'a str>>, Q: Into<Option<&'b gio::Cancellable>>>(&self, commit_checksum: &str, key_id: &str, homedir: P, cancellable: Q) -> Result<(), Error> {
+        let homedir = homedir.into();
+        let homedir = homedir.to_glib_none();
+        let cancellable = cancellable.into();
+        let cancellable = cancellable.to_glib_none();
+        unsafe {
+            let mut error = ptr::null_mut();
+            let _ = ffi::ostree_repo_sign_commit(self.to_glib_none().0, commit_checksum.to_glib_none().0, key_id.to_glib_none().0, homedir.0, cancellable.0, &mut error);
+            if error.is_null() { Ok(()) } else { Err(from_glib_full(error)) }
+        }
+    }
+
+    fn sign_delta<'a, P: Into<Option<&'a gio::Cancellable>>>(&self, from_commit: &str, to_commit: &str, key_id: &str, homedir: &str, cancellable: P) -> Result<(), Error> {
+        let cancellable = cancellable.into();
+        let cancellable = cancellable.to_glib_none();
+        unsafe {
+            let mut error = ptr::null_mut();
+            let _ = ffi::ostree_repo_sign_delta(self.to_glib_none().0, from_commit.to_glib_none().0, to_commit.to_glib_none().0, key_id.to_glib_none().0, homedir.to_glib_none().0, cancellable.0, &mut error);
+            if error.is_null() { Ok(()) } else { Err(from_glib_full(error)) }
+        }
+    }
+
+    fn static_delta_execute_offline<'a, P: IsA<gio::File>, Q: Into<Option<&'a gio::Cancellable>>>(&self, dir_or_file: &P, skip_validation: bool, cancellable: Q) -> Result<(), Error> {
+        let cancellable = cancellable.into();
+        let cancellable = cancellable.to_glib_none();
+        unsafe {
+            let mut error = ptr::null_mut();
+            let _ = ffi::ostree_repo_static_delta_execute_offline(self.to_glib_none().0, dir_or_file.to_glib_none().0, skip_validation.to_glib(), cancellable.0, &mut error);
+            if error.is_null() { Ok(()) } else { Err(from_glib_full(error)) }
+        }
+    }
+
+    fn static_delta_generate<'a, 'b, 'c, P: Into<Option<&'a glib::Variant>>, Q: Into<Option<&'b glib::Variant>>, R: Into<Option<&'c gio::Cancellable>>>(&self, opt: StaticDeltaGenerateOpt, from: &str, to: &str, metadata: P, params: Q, cancellable: R) -> Result<(), Error> {
+        let metadata = metadata.into();
+        let metadata = metadata.to_glib_none();
+        let params = params.into();
+        let params = params.to_glib_none();
+        let cancellable = cancellable.into();
+        let cancellable = cancellable.to_glib_none();
+        unsafe {
+            let mut error = ptr::null_mut();
+            let _ = ffi::ostree_repo_static_delta_generate(self.to_glib_none().0, opt.to_glib(), from.to_glib_none().0, to.to_glib_none().0, metadata.0, params.0, cancellable.0, &mut error);
+            if error.is_null() { Ok(()) } else { Err(from_glib_full(error)) }
+        }
+    }
+
+    #[cfg(any(feature = "v2018_6", feature = "dox"))]
+    fn transaction_set_collection_ref<'a, P: Into<Option<&'a str>>>(&self, ref_: &CollectionRef, checksum: P) {
+        let checksum = checksum.into();
+        let checksum = checksum.to_glib_none();
+        unsafe {
+            ffi::ostree_repo_transaction_set_collection_ref(self.to_glib_none().0, ref_.to_glib_none().0, checksum.0);
+        }
+    }
+
+    fn transaction_set_ref<'a, 'b, P: Into<Option<&'a str>>, Q: Into<Option<&'b str>>>(&self, remote: P, ref_: &str, checksum: Q) {
+        let remote = remote.into();
+        let remote = remote.to_glib_none();
+        let checksum = checksum.into();
+        let checksum = checksum.to_glib_none();
+        unsafe {
+            ffi::ostree_repo_transaction_set_ref(self.to_glib_none().0, remote.0, ref_.to_glib_none().0, checksum.0);
+        }
+    }
+
+    fn transaction_set_refspec<'a, P: Into<Option<&'a str>>>(&self, refspec: &str, checksum: P) {
+        let checksum = checksum.into();
+        let checksum = checksum.to_glib_none();
+        unsafe {
+            ffi::ostree_repo_transaction_set_refspec(self.to_glib_none().0, refspec.to_glib_none().0, checksum.0);
+        }
+    }
+
+    //fn traverse_commit<'a, P: Into<Option<&'a gio::Cancellable>>>(&self, commit_checksum: &str, maxdepth: i32, out_reachable: /*Unknown conversion*//*Unimplemented*/HashTable TypeId { ns_id: 2, id: 181 }/TypeId { ns_id: 2, id: 181 }, cancellable: P) -> Result<(), Error> {
+    //    unsafe { TODO: call ffi::ostree_repo_traverse_commit() }
+    //}
+
+    //fn traverse_commit_union<'a, P: Into<Option<&'a gio::Cancellable>>>(&self, commit_checksum: &str, maxdepth: i32, inout_reachable: /*Unknown conversion*//*Unimplemented*/HashTable TypeId { ns_id: 0, id: 25 }/TypeId { ns_id: 0, id: 25 }, cancellable: P) -> Result<(), Error> {
+    //    unsafe { TODO: call ffi::ostree_repo_traverse_commit_union() }
+    //}
+
+    //#[cfg(any(feature = "v2018_5", feature = "dox"))]
+    //fn traverse_commit_union_with_parents<'a, P: Into<Option<&'a gio::Cancellable>>>(&self, commit_checksum: &str, maxdepth: i32, inout_reachable: /*Unknown conversion*//*Unimplemented*/HashTable TypeId { ns_id: 0, id: 25 }/TypeId { ns_id: 0, id: 25 }, inout_parents: /*Unknown conversion*//*Unimplemented*/HashTable TypeId { ns_id: 0, id: 25 }/TypeId { ns_id: 0, id: 25 }, cancellable: P) -> Result<(), Error> {
+    //    unsafe { TODO: call ffi::ostree_repo_traverse_commit_union_with_parents() }
+    //}
+
+    //#[cfg(any(feature = "v2018_6", feature = "dox"))]
+    //fn traverse_reachable_refs<'a, P: Into<Option<&'a gio::Cancellable>>>(&self, depth: u32, reachable: /*Unknown conversion*//*Unimplemented*/HashTable TypeId { ns_id: 2, id: 181 }/TypeId { ns_id: 2, id: 181 }, cancellable: P) -> Result<(), Error> {
+    //    unsafe { TODO: call ffi::ostree_repo_traverse_reachable_refs() }
+    //}
+
+    fn verify_commit<'a, 'b, 'c, P: IsA<gio::File> + 'a, Q: Into<Option<&'a P>>, R: IsA<gio::File> + 'b, S: Into<Option<&'b R>>, T: Into<Option<&'c gio::Cancellable>>>(&self, commit_checksum: &str, keyringdir: Q, extra_keyring: S, cancellable: T) -> Result<(), Error> {
+        let keyringdir = keyringdir.into();
+        let keyringdir = keyringdir.to_glib_none();
+        let extra_keyring = extra_keyring.into();
+        let extra_keyring = extra_keyring.to_glib_none();
+        let cancellable = cancellable.into();
+        let cancellable = cancellable.to_glib_none();
+        unsafe {
+            let mut error = ptr::null_mut();
+            let _ = ffi::ostree_repo_verify_commit(self.to_glib_none().0, commit_checksum.to_glib_none().0, keyringdir.0, extra_keyring.0, cancellable.0, &mut error);
+            if error.is_null() { Ok(()) } else { Err(from_glib_full(error)) }
+        }
+    }
+
+    fn verify_commit_ext<'a, 'b, 'c, P: IsA<gio::File> + 'a, Q: Into<Option<&'a P>>, R: IsA<gio::File> + 'b, S: Into<Option<&'b R>>, T: Into<Option<&'c gio::Cancellable>>>(&self, commit_checksum: &str, keyringdir: Q, extra_keyring: S, cancellable: T) -> Result<GpgVerifyResult, Error> {
+        let keyringdir = keyringdir.into();
+        let keyringdir = keyringdir.to_glib_none();
+        let extra_keyring = extra_keyring.into();
+        let extra_keyring = extra_keyring.to_glib_none();
+        let cancellable = cancellable.into();
+        let cancellable = cancellable.to_glib_none();
+        unsafe {
+            let mut error = ptr::null_mut();
+            let ret = ffi::ostree_repo_verify_commit_ext(self.to_glib_none().0, commit_checksum.to_glib_none().0, keyringdir.0, extra_keyring.0, cancellable.0, &mut error);
+            if error.is_null() { Ok(from_glib_full(ret)) } else { Err(from_glib_full(error)) }
+        }
+    }
+
+    fn verify_commit_for_remote<'a, P: Into<Option<&'a gio::Cancellable>>>(&self, commit_checksum: &str, remote_name: &str, cancellable: P) -> Result<GpgVerifyResult, Error> {
+        let cancellable = cancellable.into();
+        let cancellable = cancellable.to_glib_none();
+        unsafe {
+            let mut error = ptr::null_mut();
+            let ret = ffi::ostree_repo_verify_commit_for_remote(self.to_glib_none().0, commit_checksum.to_glib_none().0, remote_name.to_glib_none().0, cancellable.0, &mut error);
+            if error.is_null() { Ok(from_glib_full(ret)) } else { Err(from_glib_full(error)) }
+        }
+    }
+
+    fn verify_summary<'a, P: Into<Option<&'a gio::Cancellable>>>(&self, remote_name: &str, summary: &glib::Bytes, signatures: &glib::Bytes, cancellable: P) -> Result<GpgVerifyResult, Error> {
+        let cancellable = cancellable.into();
+        let cancellable = cancellable.to_glib_none();
+        unsafe {
+            let mut error = ptr::null_mut();
+            let ret = ffi::ostree_repo_verify_summary(self.to_glib_none().0, remote_name.to_glib_none().0, summary.to_glib_none().0, signatures.to_glib_none().0, cancellable.0, &mut error);
+            if error.is_null() { Ok(from_glib_full(ret)) } else { Err(from_glib_full(error)) }
+        }
+    }
+
+    fn write_archive_to_mtree<'a, 'b, P: IsA<gio::File>, Q: Into<Option<&'a RepoCommitModifier>>, R: Into<Option<&'b gio::Cancellable>>>(&self, archive: &P, mtree: &MutableTree, modifier: Q, autocreate_parents: bool, cancellable: R) -> Result<(), Error> {
+        let modifier = modifier.into();
+        let modifier = modifier.to_glib_none();
+        let cancellable = cancellable.into();
+        let cancellable = cancellable.to_glib_none();
+        unsafe {
+            let mut error = ptr::null_mut();
+            let _ = ffi::ostree_repo_write_archive_to_mtree(self.to_glib_none().0, archive.to_glib_none().0, mtree.to_glib_none().0, modifier.0, autocreate_parents.to_glib(), cancellable.0, &mut error);
+            if error.is_null() { Ok(()) } else { Err(from_glib_full(error)) }
+        }
+    }
+
+    fn write_commit<'a, 'b, 'c, 'd, 'e, P: Into<Option<&'a str>>, Q: Into<Option<&'b str>>, R: Into<Option<&'c str>>, S: Into<Option<&'d glib::Variant>>, T: Into<Option<&'e gio::Cancellable>>>(&self, parent: P, subject: Q, body: R, metadata: S, root: &RepoFile, cancellable: T) -> Result<String, Error> {
+        let parent = parent.into();
+        let parent = parent.to_glib_none();
+        let subject = subject.into();
+        let subject = subject.to_glib_none();
+        let body = body.into();
+        let body = body.to_glib_none();
+        let metadata = metadata.into();
+        let metadata = metadata.to_glib_none();
+        let cancellable = cancellable.into();
+        let cancellable = cancellable.to_glib_none();
+        unsafe {
+            let mut out_commit = ptr::null_mut();
+            let mut error = ptr::null_mut();
+            let _ = ffi::ostree_repo_write_commit(self.to_glib_none().0, parent.0, subject.0, body.0, metadata.0, root.to_glib_none().0, &mut out_commit, cancellable.0, &mut error);
+            if error.is_null() { Ok(from_glib_full(out_commit)) } else { Err(from_glib_full(error)) }
+        }
+    }
+
+    fn write_commit_detached_metadata<'a, 'b, P: Into<Option<&'a glib::Variant>>, Q: Into<Option<&'b gio::Cancellable>>>(&self, checksum: &str, metadata: P, cancellable: Q) -> Result<(), Error> {
+        let metadata = metadata.into();
+        let metadata = metadata.to_glib_none();
+        let cancellable = cancellable.into();
+        let cancellable = cancellable.to_glib_none();
+        unsafe {
+            let mut error = ptr::null_mut();
+            let _ = ffi::ostree_repo_write_commit_detached_metadata(self.to_glib_none().0, checksum.to_glib_none().0, metadata.0, cancellable.0, &mut error);
+            if error.is_null() { Ok(()) } else { Err(from_glib_full(error)) }
+        }
+    }
+
+    fn write_commit_with_time<'a, 'b, 'c, 'd, 'e, P: Into<Option<&'a str>>, Q: Into<Option<&'b str>>, R: Into<Option<&'c str>>, S: Into<Option<&'d glib::Variant>>, T: Into<Option<&'e gio::Cancellable>>>(&self, parent: P, subject: Q, body: R, metadata: S, root: &RepoFile, time: u64, cancellable: T) -> Result<String, Error> {
+        let parent = parent.into();
+        let parent = parent.to_glib_none();
+        let subject = subject.into();
+        let subject = subject.to_glib_none();
+        let body = body.into();
+        let body = body.to_glib_none();
+        let metadata = metadata.into();
+        let metadata = metadata.to_glib_none();
+        let cancellable = cancellable.into();
+        let cancellable = cancellable.to_glib_none();
+        unsafe {
+            let mut out_commit = ptr::null_mut();
+            let mut error = ptr::null_mut();
+            let _ = ffi::ostree_repo_write_commit_with_time(self.to_glib_none().0, parent.0, subject.0, body.0, metadata.0, root.to_glib_none().0, time, &mut out_commit, cancellable.0, &mut error);
+            if error.is_null() { Ok(from_glib_full(out_commit)) } else { Err(from_glib_full(error)) }
+        }
+    }
+
+    fn write_config(&self, new_config: &glib::KeyFile) -> Result<(), Error> {
+        unsafe {
+            let mut error = ptr::null_mut();
+            let _ = ffi::ostree_repo_write_config(self.to_glib_none().0, new_config.to_glib_none().0, &mut error);
+            if error.is_null() { Ok(()) } else { Err(from_glib_full(error)) }
+        }
+    }
+
+    //fn write_content<'a, 'b, P: Into<Option<&'a str>>, Q: IsA<gio::InputStream>, R: Into<Option<&'b gio::Cancellable>>>(&self, expected_checksum: P, object_input: &Q, length: u64, out_csum: /*Unknown conversion*//*Unimplemented*/FixedArray TypeId { ns_id: 0, id: 3 }; 32, cancellable: R) -> Result<(), Error> {
+    //    unsafe { TODO: call ffi::ostree_repo_write_content() }
+    //}
+
+    fn write_content_trusted<'a, P: IsA<gio::InputStream>, Q: Into<Option<&'a gio::Cancellable>>>(&self, checksum: &str, object_input: &P, length: u64, cancellable: Q) -> Result<(), Error> {
+        let cancellable = cancellable.into();
+        let cancellable = cancellable.to_glib_none();
+        unsafe {
+            let mut error = ptr::null_mut();
+            let _ = ffi::ostree_repo_write_content_trusted(self.to_glib_none().0, checksum.to_glib_none().0, object_input.to_glib_none().0, length, cancellable.0, &mut error);
+            if error.is_null() { Ok(()) } else { Err(from_glib_full(error)) }
+        }
+    }
+
+    fn write_dfd_to_mtree<'a, 'b, P: Into<Option<&'a RepoCommitModifier>>, Q: Into<Option<&'b gio::Cancellable>>>(&self, dfd: i32, path: &str, mtree: &MutableTree, modifier: P, cancellable: Q) -> Result<(), Error> {
+        let modifier = modifier.into();
+        let modifier = modifier.to_glib_none();
+        let cancellable = cancellable.into();
+        let cancellable = cancellable.to_glib_none();
+        unsafe {
+            let mut error = ptr::null_mut();
+            let _ = ffi::ostree_repo_write_dfd_to_mtree(self.to_glib_none().0, dfd, path.to_glib_none().0, mtree.to_glib_none().0, modifier.0, cancellable.0, &mut error);
+            if error.is_null() { Ok(()) } else { Err(from_glib_full(error)) }
+        }
+    }
+
+    fn write_directory_to_mtree<'a, 'b, P: IsA<gio::File>, Q: Into<Option<&'a RepoCommitModifier>>, R: Into<Option<&'b gio::Cancellable>>>(&self, dir: &P, mtree: &MutableTree, modifier: Q, cancellable: R) -> Result<(), Error> {
+        let modifier = modifier.into();
+        let modifier = modifier.to_glib_none();
+        let cancellable = cancellable.into();
+        let cancellable = cancellable.to_glib_none();
+        unsafe {
+            let mut error = ptr::null_mut();
+            let _ = ffi::ostree_repo_write_directory_to_mtree(self.to_glib_none().0, dir.to_glib_none().0, mtree.to_glib_none().0, modifier.0, cancellable.0, &mut error);
+            if error.is_null() { Ok(()) } else { Err(from_glib_full(error)) }
+        }
+    }
+
+    //fn write_metadata<'a, 'b, P: Into<Option<&'a str>>, Q: Into<Option<&'b gio::Cancellable>>>(&self, objtype: ObjectType, expected_checksum: P, object: &glib::Variant, out_csum: /*Unknown conversion*//*Unimplemented*/FixedArray TypeId { ns_id: 0, id: 3 }; 32, cancellable: Q) -> Result<(), Error> {
+    //    unsafe { TODO: call ffi::ostree_repo_write_metadata() }
+    //}
+
+    fn write_metadata_stream_trusted<'a, P: IsA<gio::InputStream>, Q: Into<Option<&'a gio::Cancellable>>>(&self, objtype: ObjectType, checksum: &str, object_input: &P, length: u64, cancellable: Q) -> Result<(), Error> {
+        let cancellable = cancellable.into();
+        let cancellable = cancellable.to_glib_none();
+        unsafe {
+            let mut error = ptr::null_mut();
+            let _ = ffi::ostree_repo_write_metadata_stream_trusted(self.to_glib_none().0, objtype.to_glib(), checksum.to_glib_none().0, object_input.to_glib_none().0, length, cancellable.0, &mut error);
+            if error.is_null() { Ok(()) } else { Err(from_glib_full(error)) }
+        }
+    }
+
+    fn write_metadata_trusted<'a, P: Into<Option<&'a gio::Cancellable>>>(&self, objtype: ObjectType, checksum: &str, variant: &glib::Variant, cancellable: P) -> Result<(), Error> {
+        let cancellable = cancellable.into();
+        let cancellable = cancellable.to_glib_none();
+        unsafe {
+            let mut error = ptr::null_mut();
+            let _ = ffi::ostree_repo_write_metadata_trusted(self.to_glib_none().0, objtype.to_glib(), checksum.to_glib_none().0, variant.to_glib_none().0, cancellable.0, &mut error);
+            if error.is_null() { Ok(()) } else { Err(from_glib_full(error)) }
+        }
+    }
+
+    fn write_mtree<'a, P: Into<Option<&'a gio::Cancellable>>>(&self, mtree: &MutableTree, cancellable: P) -> Result<gio::File, Error> {
+        let cancellable = cancellable.into();
+        let cancellable = cancellable.to_glib_none();
+        unsafe {
+            let mut out_file = ptr::null_mut();
+            let mut error = ptr::null_mut();
+            let _ = ffi::ostree_repo_write_mtree(self.to_glib_none().0, mtree.to_glib_none().0, &mut out_file, cancellable.0, &mut error);
+            if error.is_null() { Ok(from_glib_full(out_file)) } else { Err(from_glib_full(error)) }
+        }
+    }
+
+    fn get_property_remotes_config_dir(&self) -> Option<String> {
+        unsafe {
+            let mut value = Value::from_type(<String as StaticType>::static_type());
+            gobject_ffi::g_object_get_property(self.to_glib_none().0, "remotes-config-dir".to_glib_none().0, value.to_glib_none_mut().0);
+            value.get()
+        }
+    }
+
+    fn get_property_sysroot_path(&self) -> Option<gio::File> {
+        unsafe {
+            let mut value = Value::from_type(<gio::File as StaticType>::static_type());
+            gobject_ffi::g_object_get_property(self.to_glib_none().0, "sysroot-path".to_glib_none().0, value.to_glib_none_mut().0);
+            value.get()
+        }
+    }
+
+    fn connect_gpg_verify_result<F: Fn(&Self, &str, &GpgVerifyResult) + 'static>(&self, f: F) -> SignalHandlerId {
+        unsafe {
+            let f: Box_<Box_<Fn(&Self, &str, &GpgVerifyResult) + 'static>> = Box_::new(Box_::new(f));
+            connect(self.to_glib_none().0, "gpg-verify-result",
+                transmute(gpg_verify_result_trampoline::<Self> as usize), Box_::into_raw(f) as *mut _)
+        }
+    }
+}
+
+unsafe extern "C" fn gpg_verify_result_trampoline<P>(this: *mut ffi::OstreeRepo, checksum: *mut libc::c_char, result: *mut ffi::OstreeGpgVerifyResult, f: glib_ffi::gpointer)
+where P: IsA<Repo> {
+    let f: &&(Fn(&P, &str, &GpgVerifyResult) + 'static) = transmute(f);
+    f(&Repo::from_glib_borrow(this).downcast_unchecked(), &String::from_glib_none(checksum), &from_glib_borrow(result))
+}
diff --git a/rust-bindings/rust/src/auto/repo_commit_modifier.rs b/rust-bindings/rust/src/auto/repo_commit_modifier.rs
new file mode 100644 (file)
index 0000000..1b7dac2
--- /dev/null
@@ -0,0 +1,49 @@
+// This file was generated by gir (https://github.com/gtk-rs/gir @ ffda6f9)
+// from gir-files (https://github.com/gtk-rs/gir-files @ ???)
+// DO NOT EDIT
+
+#[cfg(any(feature = "v2017_13", feature = "dox"))]
+use RepoDevInoCache;
+use SePolicy;
+use ffi;
+use glib::translate::*;
+use glib_ffi;
+use gobject_ffi;
+use std::mem;
+use std::ptr;
+
+glib_wrapper! {
+    #[derive(Debug, PartialEq, Eq, PartialOrd, Ord, Hash)]
+    pub struct RepoCommitModifier(Shared<ffi::OstreeRepoCommitModifier>);
+
+    match fn {
+        ref => |ptr| ffi::ostree_repo_commit_modifier_ref(ptr),
+        unref => |ptr| ffi::ostree_repo_commit_modifier_unref(ptr),
+        get_type => || ffi::ostree_repo_commit_modifier_get_type(),
+    }
+}
+
+impl RepoCommitModifier {
+    //pub fn new<'a, P: Into<Option<&'a /*Unimplemented*/RepoCommitFilter>>>(flags: /*Ignored*/RepoCommitModifierFlags, commit_filter: P, destroy_notify: /*Unknown conversion*//*Unimplemented*/DestroyNotify) -> RepoCommitModifier {
+    //    unsafe { TODO: call ffi::ostree_repo_commit_modifier_new() }
+    //}
+
+    #[cfg(any(feature = "v2017_13", feature = "dox"))]
+    pub fn set_devino_cache(&self, cache: &RepoDevInoCache) {
+        unsafe {
+            ffi::ostree_repo_commit_modifier_set_devino_cache(self.to_glib_none().0, cache.to_glib_none().0);
+        }
+    }
+
+    pub fn set_sepolicy<'a, P: Into<Option<&'a SePolicy>>>(&self, sepolicy: P) {
+        let sepolicy = sepolicy.into();
+        let sepolicy = sepolicy.to_glib_none();
+        unsafe {
+            ffi::ostree_repo_commit_modifier_set_sepolicy(self.to_glib_none().0, sepolicy.0);
+        }
+    }
+
+    //pub fn set_xattr_callback(&self, callback: /*Unknown conversion*//*Unimplemented*/RepoCommitModifierXattrCallback, destroy: /*Unknown conversion*//*Unimplemented*/DestroyNotify) {
+    //    unsafe { TODO: call ffi::ostree_repo_commit_modifier_set_xattr_callback() }
+    //}
+}
diff --git a/rust-bindings/rust/src/auto/repo_dev_ino_cache.rs b/rust-bindings/rust/src/auto/repo_dev_ino_cache.rs
new file mode 100644 (file)
index 0000000..b12c3fd
--- /dev/null
@@ -0,0 +1,35 @@
+// This file was generated by gir (https://github.com/gtk-rs/gir @ ffda6f9)
+// from gir-files (https://github.com/gtk-rs/gir-files @ ???)
+// DO NOT EDIT
+
+use ffi;
+use glib::translate::*;
+use glib_ffi;
+use gobject_ffi;
+use std::mem;
+use std::ptr;
+
+glib_wrapper! {
+    #[derive(Debug, PartialEq, Eq, PartialOrd, Ord, Hash)]
+    pub struct RepoDevInoCache(Shared<ffi::OstreeRepoDevInoCache>);
+
+    match fn {
+        ref => |ptr| ffi::ostree_repo_devino_cache_ref(ptr),
+        unref => |ptr| ffi::ostree_repo_devino_cache_unref(ptr),
+        get_type => || ffi::ostree_repo_devino_cache_get_type(),
+    }
+}
+
+impl RepoDevInoCache {
+    pub fn new() -> RepoDevInoCache {
+        unsafe {
+            from_glib_full(ffi::ostree_repo_devino_cache_new())
+        }
+    }
+}
+
+impl Default for RepoDevInoCache {
+    fn default() -> Self {
+        Self::new()
+    }
+}
diff --git a/rust-bindings/rust/src/auto/repo_file.rs b/rust-bindings/rust/src/auto/repo_file.rs
new file mode 100644 (file)
index 0000000..de64823
--- /dev/null
@@ -0,0 +1,104 @@
+// This file was generated by gir (https://github.com/gtk-rs/gir @ ffda6f9)
+// from gir-files (https://github.com/gtk-rs/gir-files @ ???)
+// DO NOT EDIT
+
+use Error;
+use Repo;
+use ffi;
+use gio;
+use gio_ffi;
+use glib;
+use glib::object::IsA;
+use glib::translate::*;
+use glib_ffi;
+use gobject_ffi;
+use std::mem;
+use std::ptr;
+
+glib_wrapper! {
+    pub struct RepoFile(Object<ffi::OstreeRepoFile, ffi::OstreeRepoFileClass>): [
+        gio::File => gio_ffi::GFile,
+    ];
+
+    match fn {
+        get_type => || ffi::ostree_repo_file_get_type(),
+    }
+}
+
+pub trait RepoFileExt {
+    fn ensure_resolved(&self) -> Result<(), Error>;
+
+    fn get_checksum(&self) -> Option<String>;
+
+    fn get_repo(&self) -> Option<Repo>;
+
+    fn get_root(&self) -> Option<RepoFile>;
+
+    fn tree_get_contents(&self) -> Option<glib::Variant>;
+
+    fn tree_get_contents_checksum(&self) -> Option<String>;
+
+    fn tree_get_metadata(&self) -> Option<glib::Variant>;
+
+    fn tree_get_metadata_checksum(&self) -> Option<String>;
+
+    fn tree_set_metadata(&self, checksum: &str, metadata: &glib::Variant);
+}
+
+impl<O: IsA<RepoFile>> RepoFileExt for O {
+    fn ensure_resolved(&self) -> Result<(), Error> {
+        unsafe {
+            let mut error = ptr::null_mut();
+            let _ = ffi::ostree_repo_file_ensure_resolved(self.to_glib_none().0, &mut error);
+            if error.is_null() { Ok(()) } else { Err(from_glib_full(error)) }
+        }
+    }
+
+    fn get_checksum(&self) -> Option<String> {
+        unsafe {
+            from_glib_none(ffi::ostree_repo_file_get_checksum(self.to_glib_none().0))
+        }
+    }
+
+    fn get_repo(&self) -> Option<Repo> {
+        unsafe {
+            from_glib_none(ffi::ostree_repo_file_get_repo(self.to_glib_none().0))
+        }
+    }
+
+    fn get_root(&self) -> Option<RepoFile> {
+        unsafe {
+            from_glib_none(ffi::ostree_repo_file_get_root(self.to_glib_none().0))
+        }
+    }
+
+    fn tree_get_contents(&self) -> Option<glib::Variant> {
+        unsafe {
+            from_glib_full(ffi::ostree_repo_file_tree_get_contents(self.to_glib_none().0))
+        }
+    }
+
+    fn tree_get_contents_checksum(&self) -> Option<String> {
+        unsafe {
+            from_glib_none(ffi::ostree_repo_file_tree_get_contents_checksum(self.to_glib_none().0))
+        }
+    }
+
+    fn tree_get_metadata(&self) -> Option<glib::Variant> {
+        unsafe {
+            from_glib_full(ffi::ostree_repo_file_tree_get_metadata(self.to_glib_none().0))
+        }
+    }
+
+    fn tree_get_metadata_checksum(&self) -> Option<String> {
+        unsafe {
+            from_glib_none(ffi::ostree_repo_file_tree_get_metadata_checksum(self.to_glib_none().0))
+        }
+    }
+
+    fn tree_set_metadata(&self, checksum: &str, metadata: &glib::Variant) {
+        unsafe {
+            ffi::ostree_repo_file_tree_set_metadata(self.to_glib_none().0, checksum.to_glib_none().0, metadata.to_glib_none().0);
+        }
+    }
+}
diff --git a/rust-bindings/rust/src/auto/repo_transaction_stats.rs b/rust-bindings/rust/src/auto/repo_transaction_stats.rs
new file mode 100644 (file)
index 0000000..1136967
--- /dev/null
@@ -0,0 +1,21 @@
+// This file was generated by gir (https://github.com/gtk-rs/gir @ ffda6f9)
+// from gir-files (https://github.com/gtk-rs/gir-files @ ???)
+// DO NOT EDIT
+
+use ffi;
+use glib::translate::*;
+use glib_ffi;
+use gobject_ffi;
+use std::mem;
+use std::ptr;
+
+glib_wrapper! {
+    #[derive(Debug, PartialEq, Eq, PartialOrd, Ord, Hash)]
+    pub struct RepoTransactionStats(Boxed<ffi::OstreeRepoTransactionStats>);
+
+    match fn {
+        copy => |ptr| gobject_ffi::g_boxed_copy(ffi::ostree_repo_transaction_stats_get_type(), ptr as *mut _) as *mut ffi::OstreeRepoTransactionStats,
+        free => |ptr| gobject_ffi::g_boxed_free(ffi::ostree_repo_transaction_stats_get_type(), ptr as *mut _),
+        get_type => || ffi::ostree_repo_transaction_stats_get_type(),
+    }
+}
diff --git a/rust-bindings/rust/src/auto/se_policy.rs b/rust-bindings/rust/src/auto/se_policy.rs
new file mode 100644 (file)
index 0000000..11b5b68
--- /dev/null
@@ -0,0 +1,127 @@
+// This file was generated by gir (https://github.com/gtk-rs/gir @ ffda6f9)
+// from gir-files (https://github.com/gtk-rs/gir-files @ ???)
+// DO NOT EDIT
+
+use Error;
+use SePolicyRestoreconFlags;
+use ffi;
+use gio;
+use glib;
+use glib::StaticType;
+use glib::Value;
+use glib::object::IsA;
+use glib::translate::*;
+use glib_ffi;
+use gobject_ffi;
+use std::mem;
+use std::ptr;
+
+glib_wrapper! {
+    pub struct SePolicy(Object<ffi::OstreeSePolicy>);
+
+    match fn {
+        get_type => || ffi::ostree_sepolicy_get_type(),
+    }
+}
+
+impl SePolicy {
+    pub fn new<'a, P: IsA<gio::File>, Q: Into<Option<&'a gio::Cancellable>>>(path: &P, cancellable: Q) -> Result<SePolicy, Error> {
+        let cancellable = cancellable.into();
+        let cancellable = cancellable.to_glib_none();
+        unsafe {
+            let mut error = ptr::null_mut();
+            let ret = ffi::ostree_sepolicy_new(path.to_glib_none().0, cancellable.0, &mut error);
+            if error.is_null() { Ok(from_glib_full(ret)) } else { Err(from_glib_full(error)) }
+        }
+    }
+
+    pub fn new_at<'a, P: Into<Option<&'a gio::Cancellable>>>(rootfs_dfd: i32, cancellable: P) -> Result<SePolicy, Error> {
+        let cancellable = cancellable.into();
+        let cancellable = cancellable.to_glib_none();
+        unsafe {
+            let mut error = ptr::null_mut();
+            let ret = ffi::ostree_sepolicy_new_at(rootfs_dfd, cancellable.0, &mut error);
+            if error.is_null() { Ok(from_glib_full(ret)) } else { Err(from_glib_full(error)) }
+        }
+    }
+
+    //pub fn fscreatecon_cleanup<P: Into<Option</*Unimplemented*/Fundamental: Pointer>>>(unused: P) {
+    //    unsafe { TODO: call ffi::ostree_sepolicy_fscreatecon_cleanup() }
+    //}
+}
+
+pub trait SePolicyExt {
+    fn get_csum(&self) -> Option<String>;
+
+    fn get_label<'a, P: Into<Option<&'a gio::Cancellable>>>(&self, relpath: &str, unix_mode: u32, cancellable: P) -> Result<String, Error>;
+
+    fn get_name(&self) -> Option<String>;
+
+    fn get_path(&self) -> Option<gio::File>;
+
+    fn restorecon<'a, 'b, P: Into<Option<&'a gio::FileInfo>>, Q: IsA<gio::File>, R: Into<Option<&'b gio::Cancellable>>>(&self, path: &str, info: P, target: &Q, flags: SePolicyRestoreconFlags, cancellable: R) -> Result<String, Error>;
+
+    fn setfscreatecon(&self, path: &str, mode: u32) -> Result<(), Error>;
+
+    fn get_property_rootfs_dfd(&self) -> i32;
+}
+
+impl<O: IsA<SePolicy> + IsA<glib::object::Object>> SePolicyExt for O {
+    fn get_csum(&self) -> Option<String> {
+        unsafe {
+            from_glib_none(ffi::ostree_sepolicy_get_csum(self.to_glib_none().0))
+        }
+    }
+
+    fn get_label<'a, P: Into<Option<&'a gio::Cancellable>>>(&self, relpath: &str, unix_mode: u32, cancellable: P) -> Result<String, Error> {
+        let cancellable = cancellable.into();
+        let cancellable = cancellable.to_glib_none();
+        unsafe {
+            let mut out_label = ptr::null_mut();
+            let mut error = ptr::null_mut();
+            let _ = ffi::ostree_sepolicy_get_label(self.to_glib_none().0, relpath.to_glib_none().0, unix_mode, &mut out_label, cancellable.0, &mut error);
+            if error.is_null() { Ok(from_glib_full(out_label)) } else { Err(from_glib_full(error)) }
+        }
+    }
+
+    fn get_name(&self) -> Option<String> {
+        unsafe {
+            from_glib_none(ffi::ostree_sepolicy_get_name(self.to_glib_none().0))
+        }
+    }
+
+    fn get_path(&self) -> Option<gio::File> {
+        unsafe {
+            from_glib_none(ffi::ostree_sepolicy_get_path(self.to_glib_none().0))
+        }
+    }
+
+    fn restorecon<'a, 'b, P: Into<Option<&'a gio::FileInfo>>, Q: IsA<gio::File>, R: Into<Option<&'b gio::Cancellable>>>(&self, path: &str, info: P, target: &Q, flags: SePolicyRestoreconFlags, cancellable: R) -> Result<String, Error> {
+        let info = info.into();
+        let info = info.to_glib_none();
+        let cancellable = cancellable.into();
+        let cancellable = cancellable.to_glib_none();
+        unsafe {
+            let mut out_new_label = ptr::null_mut();
+            let mut error = ptr::null_mut();
+            let _ = ffi::ostree_sepolicy_restorecon(self.to_glib_none().0, path.to_glib_none().0, info.0, target.to_glib_none().0, flags.to_glib(), &mut out_new_label, cancellable.0, &mut error);
+            if error.is_null() { Ok(from_glib_full(out_new_label)) } else { Err(from_glib_full(error)) }
+        }
+    }
+
+    fn setfscreatecon(&self, path: &str, mode: u32) -> Result<(), Error> {
+        unsafe {
+            let mut error = ptr::null_mut();
+            let _ = ffi::ostree_sepolicy_setfscreatecon(self.to_glib_none().0, path.to_glib_none().0, mode, &mut error);
+            if error.is_null() { Ok(()) } else { Err(from_glib_full(error)) }
+        }
+    }
+
+    fn get_property_rootfs_dfd(&self) -> i32 {
+        unsafe {
+            let mut value = Value::from_type(<i32 as StaticType>::static_type());
+            gobject_ffi::g_object_get_property(self.to_glib_none().0, "rootfs-dfd".to_glib_none().0, value.to_glib_none_mut().0);
+            value.get().unwrap()
+        }
+    }
+}
diff --git a/rust-bindings/rust/src/lib.rs b/rust-bindings/rust/src/lib.rs
new file mode 100644 (file)
index 0000000..a32a211
--- /dev/null
@@ -0,0 +1,31 @@
+extern crate gio_sys as gio_ffi;
+extern crate glib_sys as glib_ffi;
+extern crate gobject_sys as gobject_ffi;
+extern crate libostree_sys as ffi;
+#[macro_use]
+extern crate glib;
+extern crate gio;
+extern crate libc;
+#[macro_use]
+extern crate bitflags;
+#[macro_use]
+extern crate lazy_static;
+
+use glib::Error;
+
+// re-exports
+#[cfg_attr(feature = "cargo-clippy", allow(clippy))]
+mod auto;
+pub use auto::functions::*;
+pub use auto::*;
+
+mod repo;
+
+mod object_name;
+pub use object_name::ObjectName;
+
+// public modules
+pub mod prelude {
+    pub use auto::traits::*;
+    pub use repo::RepoExtManual;
+}
diff --git a/rust-bindings/rust/src/object_name.rs b/rust-bindings/rust/src/object_name.rs
new file mode 100644 (file)
index 0000000..e649492
--- /dev/null
@@ -0,0 +1,74 @@
+use ffi;
+use functions::{object_name_deserialize, object_name_serialize, object_to_string};
+use glib;
+use glib::translate::*;
+use glib_ffi;
+use std::fmt::Display;
+use std::fmt::Error;
+use std::fmt::Formatter;
+use std::hash::Hash;
+use std::hash::Hasher;
+use ObjectType;
+
+fn hash_object_name(v: &glib::Variant) -> u32 {
+    unsafe { ffi::ostree_hash_object_name(v.to_glib_none().0 as glib_ffi::gconstpointer) }
+}
+
+#[derive(Eq, Debug)]
+pub struct ObjectName {
+    variant: glib::Variant,
+    checksum: String,
+    object_type: ObjectType,
+}
+
+impl ObjectName {
+    pub fn new_from_variant(variant: glib::Variant) -> ObjectName {
+        let deserialize = object_name_deserialize(&variant);
+        ObjectName {
+            variant,
+            checksum: deserialize.0,
+            object_type: deserialize.1,
+        }
+    }
+
+    pub fn new<S: Into<String>>(checksum: S, object_type: ObjectType) -> ObjectName {
+        let checksum = checksum.into();
+        let variant = object_name_serialize(checksum.as_str(), object_type).unwrap();
+        ObjectName {
+            variant,
+            checksum,
+            object_type,
+        }
+    }
+
+    pub fn checksum(&self) -> &str {
+        self.checksum.as_ref()
+    }
+
+    pub fn object_type(&self) -> ObjectType {
+        self.object_type
+    }
+
+    pub fn name(&self) -> String {
+        object_to_string(self.checksum(), self.object_type())
+            .expect("type checks should make this safe")
+    }
+}
+
+impl Display for ObjectName {
+    fn fmt(&self, f: &mut Formatter) -> Result<(), Error> {
+        write!(f, "{}", self.name())
+    }
+}
+
+impl Hash for ObjectName {
+    fn hash<H: Hasher>(&self, state: &mut H) {
+        state.write_u32(hash_object_name(&self.variant));
+    }
+}
+
+impl PartialEq for ObjectName {
+    fn eq(&self, other: &ObjectName) -> bool {
+        self.checksum == other.checksum && self.object_type == other.object_type
+    }
+}
diff --git a/rust-bindings/rust/src/repo.rs b/rust-bindings/rust/src/repo.rs
new file mode 100644 (file)
index 0000000..279fe8f
--- /dev/null
@@ -0,0 +1,138 @@
+use auto::{Repo, RepoListRefsExtFlags};
+use ffi;
+use gio;
+use glib;
+use glib::translate::*;
+use glib::Error;
+use glib::IsA;
+use glib_ffi;
+use std::collections::{HashMap, HashSet};
+use std::path::Path;
+use std::ptr;
+use ObjectName;
+
+unsafe extern "C" fn read_variant_table(
+    _key: glib_ffi::gpointer,
+    value: glib_ffi::gpointer,
+    hash_set: glib_ffi::gpointer,
+) {
+    let value: glib::Variant = from_glib_none(value as *const glib_ffi::GVariant);
+    let set: &mut HashSet<ObjectName> = &mut *(hash_set as *mut HashSet<ObjectName>);
+    set.insert(ObjectName::new_from_variant(value));
+}
+
+unsafe fn from_glib_container_variant_set(ptr: *mut glib_ffi::GHashTable) -> HashSet<ObjectName> {
+    let mut set = HashSet::new();
+    glib_ffi::g_hash_table_foreach(
+        ptr,
+        Some(read_variant_table),
+        &mut set as *mut HashSet<ObjectName> as *mut _,
+    );
+    glib_ffi::g_hash_table_unref(ptr);
+    set
+}
+
+pub trait RepoExtManual {
+    fn new_for_path<P: AsRef<Path>>(path: P) -> Repo;
+
+    fn traverse_commit<'a, P: Into<Option<&'a gio::Cancellable>>>(
+        &self,
+        commit_checksum: &str,
+        maxdepth: i32,
+        cancellable: P,
+    ) -> Result<HashSet<ObjectName>, Error>;
+
+    fn list_refs<'a, 'b, P: Into<Option<&'a str>>, Q: Into<Option<&'b gio::Cancellable>>>(
+        &self,
+        refspec_prefix: P,
+        cancellable: Q,
+    ) -> Result<HashMap<String, String>, Error>;
+
+    fn list_refs_ext<'a, 'b, P: Into<Option<&'a str>>, Q: Into<Option<&'b gio::Cancellable>>>(
+        &self,
+        refspec_prefix: P,
+        flags: RepoListRefsExtFlags,
+        cancellable: Q,
+    ) -> Result<HashMap<String, String>, Error>;
+}
+
+impl<O: IsA<Repo> + IsA<glib::Object> + Clone + 'static> RepoExtManual for O {
+    fn new_for_path<P: AsRef<Path>>(path: P) -> Repo {
+        Repo::new(&gio::File::new_for_path(path.as_ref()))
+    }
+
+    fn traverse_commit<'a, P: Into<Option<&'a gio::Cancellable>>>(
+        &self,
+        commit_checksum: &str,
+        maxdepth: i32,
+        cancellable: P,
+    ) -> Result<HashSet<ObjectName>, Error> {
+        unsafe {
+            let mut error = ptr::null_mut();
+            let mut hashtable = ptr::null_mut();
+            let _ = ffi::ostree_repo_traverse_commit(
+                self.to_glib_none().0,
+                commit_checksum.to_glib_none().0,
+                maxdepth,
+                &mut hashtable,
+                cancellable.into().to_glib_none().0,
+                &mut error,
+            );
+            if error.is_null() {
+                Ok(from_glib_container_variant_set(hashtable))
+            } else {
+                Err(from_glib_full(error))
+            }
+        }
+    }
+
+    fn list_refs<'a, 'b, P: Into<Option<&'a str>>, Q: Into<Option<&'b gio::Cancellable>>>(
+        &self,
+        refspec_prefix: P,
+        cancellable: Q,
+    ) -> Result<HashMap<String, String>, Error> {
+        unsafe {
+            let mut error = ptr::null_mut();
+            let mut hashtable = ptr::null_mut();
+            let _ = ffi::ostree_repo_list_refs(
+                self.to_glib_none().0,
+                refspec_prefix.into().to_glib_none().0,
+                &mut hashtable,
+                cancellable.into().to_glib_none().0,
+                &mut error,
+            );
+
+            if error.is_null() {
+                Ok(FromGlibPtrContainer::from_glib_container(hashtable))
+            } else {
+                Err(from_glib_full(error))
+            }
+        }
+    }
+
+    fn list_refs_ext<'a, 'b, P: Into<Option<&'a str>>, Q: Into<Option<&'b gio::Cancellable>>>(
+        &self,
+        refspec_prefix: P,
+        flags: RepoListRefsExtFlags,
+        cancellable: Q,
+    ) -> Result<HashMap<String, String>, Error> {
+        unsafe {
+            let mut error = ptr::null_mut();
+            let mut hashtable = ptr::null_mut();
+            let _ = ffi::ostree_repo_list_refs_ext(
+                self.to_glib_none().0,
+                refspec_prefix.into().to_glib_none().0,
+                &mut hashtable,
+                flags.to_glib(),
+                cancellable.into().to_glib_none().0,
+                &mut error,
+            );
+
+            if error.is_null() {
+                Ok(FromGlibPtrContainer::from_glib_container(hashtable))
+            } else {
+                Err(from_glib_full(error))
+            }
+        }
+    }
+}
diff --git a/rust-bindings/rust/tests/roundtrip.rs b/rust-bindings/rust/tests/roundtrip.rs
new file mode 100644 (file)
index 0000000..d8bdbed
--- /dev/null
@@ -0,0 +1,66 @@
+extern crate gio;
+extern crate glib;
+extern crate libostree;
+extern crate tempfile;
+
+use glib::prelude::*;
+use libostree::prelude::*;
+use std::fs;
+use std::io;
+use std::io::Write;
+
+fn create_repo(repodir: &tempfile::TempDir) -> Result<libostree::Repo, glib::Error> {
+    let repo = libostree::Repo::new_for_path(repodir.path());
+    repo.create(libostree::RepoMode::Archive, None)?;
+    Ok(repo)
+}
+
+fn create_test_file(treedir: &tempfile::TempDir) -> Result<(), io::Error> {
+    let mut testfile = fs::File::create(treedir.path().join("test.txt"))?;
+    write!(testfile, "test")?;
+    Ok(())
+}
+
+fn create_mtree(
+    treedir: &tempfile::TempDir,
+    repo: &libostree::Repo,
+) -> Result<libostree::MutableTree, glib::Error> {
+    let gfile = gio::File::new_for_path(treedir.path());
+    let mtree = libostree::MutableTree::new();
+    repo.write_directory_to_mtree(&gfile, &mtree, None, None)?;
+    Ok(mtree)
+}
+
+fn commit_mtree(
+    repo: &libostree::Repo,
+    mtree: &libostree::MutableTree,
+) -> Result<String, glib::Error> {
+    repo.prepare_transaction(None)?;
+    let repo_file = repo.write_mtree(mtree, None)?.downcast().unwrap();
+    let checksum = repo.write_commit(None, "Test Commit", None, None, &repo_file, None)?;
+    repo.transaction_set_ref(None, "test", checksum.as_str());
+    repo.commit_transaction(None)?;
+    Ok(checksum)
+}
+
+fn open_repo(repodir: &tempfile::TempDir) -> Result<libostree::Repo, glib::Error> {
+    let repo = libostree::Repo::new_for_path(repodir.path());
+    repo.open(None)?;
+    Ok(repo)
+}
+
+#[test]
+fn should_commit_content_to_repo_and_list_refs_again() {
+    let repodir = tempfile::tempdir().unwrap();
+    let treedir = tempfile::tempdir().unwrap();
+
+    let repo = create_repo(&repodir).expect("failed to create repo");
+    create_test_file(&treedir).expect("failed to create test file");
+    let mtree = create_mtree(&treedir, &repo).expect("failed to build mtree");
+    let checksum = commit_mtree(&repo, &mtree).expect("failed to commit mtree");
+
+    let repo = open_repo(&repodir).expect("failed to open repo");
+    let refs = repo.list_refs(None, None).expect("failed to list refs");
+    assert_eq!(refs.len(), 1);
+    assert_eq!(refs["test"], checksum);
+}